Jasmine - 任何布尔值(jasmine.any(布尔))

时间:2014-01-20 14:42:58

标签: angularjs unit-testing karma-jasmine

我用karma,jasmine编写角度的单元测试。试着写:

expect(item).toEqual(jasmine.any(Boolean));

但得到了:

Expected true to equal <jasmine.any(function Boolean() { [native code] })>.

mm ..也许我做错了什么)或者是在这种情况下编写测试值的另一种方法:

if(true或false) - 传递,如果有的话 - 失败

4 个答案:

答案 0 :(得分:12)

我认为你需要的是一个像这样的自定义Matcher:

toBeBoolean : function () {
  return {
    compare : function (actual, expected) {
      return {
        pass : (typeof actual === 'boolean'),
        message : 'Expected ' + actual + ' is not boolean'
      };
    }
  };
}

How to create a Custom Matcher

答案 1 :(得分:9)

也可以:

expect(item).toMatch(/true|false/);

答案 2 :(得分:6)

我希望你的代码按预期工作,但显然在这种情况下茉莉似乎有点奇怪。

我建议您使用以下解决方法:

&#13;
&#13;
expect(typeof item).toEqual('boolean');
&#13;
&#13;
&#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();