Angularjs 如何测试依赖于moment.js的角度过滤器?

Angularjs 如何测试依赖于moment.js的角度过滤器?,angularjs,jasmine,Angularjs,Jasmine,我有一个简单的过滤器,它取决于moment.js: app.filter('fromNow', function() { return function(date) { return moment(date).fromNow(); } }); 我可以用jasmine写这个的单元测试吗 编辑: 现在我有 ReferenceError: moment is not defined 当你这样写的时候: describe("fromNow filter", function(){

我有一个简单的过滤器,它取决于moment.js:

app.filter('fromNow', function() {
  return function(date) {
    return moment(date).fromNow();
  }
});
我可以用jasmine写这个的单元测试吗

编辑: 现在我有

ReferenceError: moment is not defined
当你这样写的时候:

describe("fromNow filter", function(){
 var moment;
 beforeEach(function(){
   module('reports');
   moment = jasmine.createSpy();
  });


  it("should output string when input string",
    inject(function(fromNowFilter) {
      fromNowFilter("string");
  }));
})

您需要将moment.js添加到测试框架中。 我也遇到了同样的问题,并修复了在karma.conf.js中添加以下行的问题

...files: [
   ....
    'app/bower_components/moment/moment.js',
    ....
    ],
.....

1加载模块2调用方法3断言结果,但我想模拟mock moment.js,因为这是单元测试,你用谷歌搜索过“jasmine模拟服务”吗?互联网上有几十个例子,你不应该嘲笑moment.js。事实上,你不应该嘲笑你不拥有的东西。如果js实现在将来发生变化,会发生什么。您的测试仍将成功,而实际实现将产生不同的输出。检查此处的讨论:尽管这会起作用;但是,您不应该包括任何其他代码单元,您应该使用mock-否则您不会测试单个单元,这会降低测试的实用性。因此,此解决方案几乎是好的,要完成mock此服务,我需要准备函数,并根据需要实现此函数(对象),例如作为空对象。但在我看来,马诺伊·什雷斯塔·安萨雷也不错。