我是新手进行单元测试并试图抓住东西。我正在尽力遵循本教程:http://www.yearofmoo.com/2013/01/full-spectrum-testing-with-angularjs-and-testacular.html#testing-filters。在我的AngularJS应用程序中,我有一个需要测试的过滤器。我有Node,Testacular和Jasmine正确设置和运行。我试图测试的过滤器非常简单:
myApp.filter('bill_ship', function () {
return function (userData) {
var output = "---";
switch (userData) {
case "0":
output = "Billing";
break;
case "1":
output = "Shipping";
break;
}
return output;
}
});
我以为我的测试设置正确,但一直都失败了。
describe("Unit Testing: Filters - ", function() {
beforeEach(angular.mock.module('prismApp', ['bill_ship']));
//BillShip Filter
it('should have a bill-ship filter: ', inject(function($filter){
expect($filter('bill_ship')).not.toEqual(null);
}));
});
此消息失败:错误:参数' fn'不是函数,从bill_ship获得字符串。
所以......我在哪里做错了?
答案 0 :(得分:24)
如果有其他人想知道(我在发现之前花了一些时间)我认为@MBielski注入过滤器的方式有点令人困惑,但是确切地完成了这项工作!但是,我发现这是将过滤器注入茉莉花单元测试环境以测试它们的好方法。
以下是过滤器定义:
angular.module('prismApp.filters', [])
.filter('billShip', function () {
return function (userData) {
// define filter
...
}
});
测试:
describe("Unit Testing: Filters - ", function() {
var billShip;
// load the module
beforeEach(module('prismApp.filters'));
// load filter function into variable
beforeEach(inject(function ($filter) {
billShip = $filter('billShip');
}));
// test billShip filter
it('should have a bill-ship filter: ', function () {
// test away!
expect(billShip).not.toEqual(null);
expect(billShip("0")).toEqual("Billing");
...
});
});
希望这有助于其他任何人。
答案 1 :(得分:1)
好吧,这就是为什么我不应该在没有咖啡因的情况下进行编码... 当您在配置文件中放置要测试的文件时,它会有所帮助。男孩我觉得自己很蠢。