gpt4 book ai didi

angularjs - 在 Angular 中测试过滤器的存在

转载 作者:行者123 更新时间:2023-12-03 08:20:58 27 4
gpt4 key购买 nike

我是单元测试的新手并试图掌握事物。我正在尽力遵循本教程: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 获取字符串。

那么......我在哪里做错了?

最佳答案

如果其他人想知道(我花了一些时间才发现)我认为 @MBielski的注入(inject)过滤器的方式有点令人困惑,但绝对可以完成这项工作!但是,我发现这是将过滤器注入(inject) jasmine 单元测试环境以进行测试的好方法。

这是过滤器定义:

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");
...
});
});

希望这对其他人有帮助。

关于angularjs - 在 Angular 中测试过滤器的存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14988395/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com