I started writing some automation tests(API)
Now I tried to do to this endpoint:
https://dog.ceo/api/breeds/image/random
so I added into my function
expect(response.body.message).to.startsWith('https://images.dog.ceo/breeds/');
and at the beginning of the test:
var chakram = require('chakram');
var chai = require('chai');
chai.use(require('chai-string'))
expect = chai.expect; // Using Expect style
expect = chakram.expect;
Earlier I did not have any problems but with this "expect starts..." after running test I got: TypeError: expect(...).to.startsWith is not a function - chai and chakram
Can anyone help me?
thanks
You don't need chai-string you can just do:
expect(response.body.message).to.be.a('string').and.satisfy(msg => msg.startsWith('https://images.dog.ceo/breeds/'));
Can even do regex in that satisfy
.
Or better then this, just use 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