尝试在jasmine测试工具中调用此自定义匹配器但我收到此错误:
TypeError: matcherCompare is undefined
var result = matcherCompare.apply(null, args);
jasmine.js (line 1192)
我的匹配员:
/*
* Extends jasmine expectations by defining new matchers
*/
beforeEach(function () {
jasmine.addMatchers({
toEqualArray: function(){
var s = typeof this.actual,
result = false;
if (s === 'object'){
if (this.actual){
if (Object.prototype.toString.call(this.actual) === Object.prototype.toString.call([])) { //'[object Array]'
result = true;
}
}
}
this.message = function(){
if (result){
return "Is Array";
}
return "Is not an Array";
};
return result;
}
});
});
toEqualArray
内部代码的核心已经作为一个简单的js函数进行了测试,没问题。你可以看到我的匹配器没有参数。我使用jasmine 2.0 standalone进行测试,我的matcher驻留在外部js文件中,就像独立版jasmine中的示例一样。我甚至将我的匹配器移到我的规范中,将jasmine
替换为this
,但没有结果!
我做错了什么?
当我在我的规范中输入这个特定的命令时,Jasmine会挂起:
expect(o.get('any')).toEqualArray();
其中o
是我的对象,返回(我测试过,没关系)数组!
我现在必须调试茉莉:(
答案 0 :(得分:1)
对于jasmine 2.0,自定义匹配器的语法已更改。更新的文档在此处:http://jasmine.github.io/2.0/custom_matcher.html