我用karma,jasmine编写角度的单元测试。试着写:
expect(item).toEqual(jasmine.any(Boolean));
但得到了:
Expected true to equal <jasmine.any(function Boolean() { [native code] })>.
mm ..也许我做错了什么)或者是在这种情况下编写测试值的另一种方法:
if(true或false) - 传递,如果有的话 - 失败
答案 0 :(得分:12)
我认为你需要的是一个像这样的自定义Matcher:
toBeBoolean : function () {
return {
compare : function (actual, expected) {
return {
pass : (typeof actual === 'boolean'),
message : 'Expected ' + actual + ' is not boolean'
};
}
};
}
答案 1 :(得分:9)
也可以:
expect(item).toMatch(/true|false/);
答案 2 :(得分:6)
我希望你的代码按预期工作,但显然在这种情况下茉莉似乎有点奇怪。
我建议您使用以下解决方法:
expect(typeof item).toEqual('boolean');
&#13;
答案 3 :(得分:1)
对我来说,标记的解决方案不正确。至少不是因为我期望它被使用的方式。 我是这样做的:
jasmine.addMatchers({
toBeBoolean: function () {
return {
compare: function (actual, expected) {
return {
pass: typeof actual === 'boolean',
message: 'Expected ' + actual + ' is not boolean'
};
}
};
}
});
因为您没有传递预期值,只是实际值。 所以你调用它的方式是:
expect(true|false).toBeBoolean();