TypeError: expect(...).to.startsWith is not a function - chai and chakram
TypeError: expect(...).to.startsWith is not a function - chai and chakram
我开始编写一些自动化测试(API)
现在我试着对这个端点做:
https://dog.ceo/api/breeds/image/random
所以我添加到我的函数中
expect(response.body.message).to.startsWith('https://images.dog.ceo/breeds/');
并且在测试开始时:
var chakram = require('chakram');
var chai = require('chai');
chai.use(require('chai-string'))
expect = chai.expect; // Using Expect style
expect = chakram.expect;
早些时候我没有遇到任何问题,但是在 运行 测试之后 "expect starts..." 我得到了:
TypeError: expect(...).to.startsWith 不是函数 - chai 和 chakram
谁能帮帮我?
谢谢
你不需要 chai-string 你可以这样做:
expect(response.body.message).to.be.a('string').and.satisfy(msg => msg.startsWith('https://images.dog.ceo/breeds/'));
甚至可以在 satisfy
中使用正则表达式。
或者比这个更好,只需使用 match
:
const { escapeRegExp } = require('lodash');
expect(response.body.message).to.be.a('string').and.match(/^https:\/\/images\.dog\.ceo\/breeds\//i);
expect(response.body.message).to.be.a('string').and.match(new RegExp('^' + escapeRegExp('https://images.dog.ceo/breeds/'), 'i')); // this is preferred way so you don't have to worry about escaping, rely on lodash method to escape
这听起来很明显...但是您是否安装了该软件包? (npm -i 柴字符串)
我在没有任何外部依赖的情况下使用以下解决方案
expect(result.startsWith("string to match")).to.be.true;
我只是 运行 遇到了与 Typescript 代码相同的问题(Typescript t运行spiler 正在输出错误)。这可能与您的问题不完全相同,但它可能会对其他人有所帮助:
我终于意识到必须同时安装 chai-string
和 @types/chai-string
软件包才能使其工作。
我现在可以写类似这样的东西了:
import { expect } from 'chai';
const chai = require('chai');
chai.use(require('chai-string'));
expect(response.body.message).to.startWith('https://images.dog.ceo/breeds/');
我觉得它更具可读性和更清晰
我开始编写一些自动化测试(API)
现在我试着对这个端点做:
https://dog.ceo/api/breeds/image/random
所以我添加到我的函数中
expect(response.body.message).to.startsWith('https://images.dog.ceo/breeds/');
并且在测试开始时:
var chakram = require('chakram');
var chai = require('chai');
chai.use(require('chai-string'))
expect = chai.expect; // Using Expect style
expect = chakram.expect;
早些时候我没有遇到任何问题,但是在 运行 测试之后 "expect starts..." 我得到了: TypeError: expect(...).to.startsWith 不是函数 - chai 和 chakram
谁能帮帮我?
谢谢
你不需要 chai-string 你可以这样做:
expect(response.body.message).to.be.a('string').and.satisfy(msg => msg.startsWith('https://images.dog.ceo/breeds/'));
甚至可以在 satisfy
中使用正则表达式。
或者比这个更好,只需使用 match
:
const { escapeRegExp } = require('lodash');
expect(response.body.message).to.be.a('string').and.match(/^https:\/\/images\.dog\.ceo\/breeds\//i);
expect(response.body.message).to.be.a('string').and.match(new RegExp('^' + escapeRegExp('https://images.dog.ceo/breeds/'), 'i')); // this is preferred way so you don't have to worry about escaping, rely on lodash method to escape
这听起来很明显...但是您是否安装了该软件包? (npm -i 柴字符串)
我在没有任何外部依赖的情况下使用以下解决方案
expect(result.startsWith("string to match")).to.be.true;
我只是 运行 遇到了与 Typescript 代码相同的问题(Typescript t运行spiler 正在输出错误)。这可能与您的问题不完全相同,但它可能会对其他人有所帮助:
我终于意识到必须同时安装 chai-string
和 @types/chai-string
软件包才能使其工作。
我现在可以写类似这样的东西了:
import { expect } from 'chai';
const chai = require('chai');
chai.use(require('chai-string'));
expect(response.body.message).to.startWith('https://images.dog.ceo/breeds/');
我觉得它更具可读性和更清晰