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

Vla*_*nko 13 unit-testing angularjs karma-jasmine

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

expect(item).toEqual(jasmine.any(Boolean));
Run Code Online (Sandbox Code Playgroud)

但得到了:

Expected true to equal <jasmine.any(function Boolean() { [native code] })>.
Run Code Online (Sandbox Code Playgroud)

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

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

Dal*_*rzo 12

我认为你需要的是一个自定义Matcher,如下所示:

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

如何创建自定义匹配器


Jul*_*ius 9

也可以:

expect(item).toMatch(/true|false/);
Run Code Online (Sandbox Code Playgroud)


Mar*_*ner 6

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

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

expect(typeof item).toEqual('boolean');
Run Code Online (Sandbox Code Playgroud)