Мне нужно утвердить функцию, которая должна возвращать константу RegExp, где исправлены шаблон и модификаторы. Как это можно сделать с Моккой?
Учитывая тестовый код следующим образом:
var expect = require("chai").expect;
describe("myRegExp() function", function () {
it("returns constant pattern", function () {
expect(myRegExp()).to.equal(/somePattern/i);
});
});
var myRegExp = function(){
return /somePattern/i;
}
Мы получаем AssertionError:
AssertionError: expected /somePattern/i to equal /somePattern/i
at Context.<anonymous> (test/stackSnippetTest.js:6:31)
RegExp можно преобразовать в String. См. Комментарии Edwin, документы RegExp, а также преобразование RegExp в String, затем обратно в RegExp
Решение заключается в использовании RegExp.toString():
var expect = require("chai").expect;
describe("myRegExp() function", function () {
it("returns constant pattern", function () {
expect(myRegExp().toString()).to.equal(/somePattern/i.toString());
});
});
var myRegExp = function(){
return /somePattern/i;
}
который работает просто отлично. В качестве альтернативы можно утверждать как RegExp.source, так и RegExp.flags:
expect(myRegExp().source).to.equal(/somePattern/i.source);
expect(myRegExp().flags).to.equal(/somePattern/i.flags);