有没有办法将Jasmine匹配器添加到整个环境中

Dan*_*umb 35 jasmine jasmine-matchers

有很多文档显示如何将匹配器添加到Jasmine规范(例如,这里).

有没有人找到一种方法将匹配器添加到整个环境中; 我想创建一组有用的匹配器,可以被任何和所有测试调用,而不是我的规范中的copypasta.

目前正在努力对源进行反向工程,但如果存在,则更喜欢一种经过验证的方法.

Ale*_*yne 48

当然,你只是在beforeEach()没有任何规范范围的情况下打电话,并在那里添加匹配器.

这将全局添加toBeOfType匹配器.

beforeEach(function() {
  var matchers = {
    toBeOfType: function(typeString) {
      return typeof this.actual == typeString;
    }
  };

  this.addMatchers(matchers);
});

describe('Thing', function() {
  // matchers available here.
});
Run Code Online (Sandbox Code Playgroud)

我创建了一个名为spec_helper.js自定义匹配器的文件,我只需要在运行其他规范套件之前加载到页面上.

  • 这里有一个jasmine 2.0+```javascript beforeEach(function(){jasmine.addMatchers({toEqualData:function(){return {compare:function(actual,expected){return {pass:angular.equals(actual,expected )}}}}}};}); ```` (2认同)

mik*_*ker 13

这是茉莉花2.0+的一个:

beforeEach(function(){
  jasmine.addMatchers({
    toEqualData: function() {
      return {
        compare: function(actual, expected) {
          return { pass: angular.equals(actual, expected) };
        }
      };
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

请注意,这使用角度angular.equals.