自定义匹配器使茉莉花挂起

时间:2013-12-31 09:33:49

标签: javascript unit-testing testing jasmine

尝试在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是我的对象,返回(我测试过,没关系)数组!

我现在必须调试茉莉:(

1 个答案:

答案 0 :(得分:1)

对于jasmine 2.0,自定义匹配器的语法已更改。更新的文档在此处:http://jasmine.github.io/2.0/custom_matcher.html