TypeError:Expect(...)。to.startsWith不是函数-chai和chakram

时间:2018-12-30 16:12:19

标签: javascript api automation chai 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;

之前我没有任何问题,但是运行测试后,有了这个“期望开始...”,我得到了: TypeError:Expect(...)。to.startsWith不是函数-chai和chakram

有人可以帮助我吗?

谢谢

3 个答案:

答案 0 :(得分:2)

您不需要柴串就可以做到:

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

答案 1 :(得分:2)

我使用以下解决方案而没有任何外部依赖

expect(result.startsWith("string to match")).to.be.true;

答案 2 :(得分:0)

这听起来很明显...但是您安装了该软件包吗? (npm -i柴串)