我正在使用传统API(我无法控制什么API返回等)的新版本的应用程序。AngularJS - 存储状态/数据的测试工厂
在应用程序初始化我请求&存储一些网站的信息我叫stateFactory
的工厂。在stateFactory里面有categories
属性(对象的数组),它存储着关系id -> category name
。
在我的应用程序模板内我使用过滤器来提取类别的名称,ID为{{ cat_id | categoryNameByIdFilter }}
,它在stateFactory.categories
中执行查找并返回类别名称。
如何为这样的功能编写单元测试(茉莉花,摩卡,柴,什么)?
// represantion of what the stateFactory looks like with some data in it
app.factory('stateFactory', ['', function(){
return {
categories = [
{ cat_id: 1, cat_name: "some category name" },
{ cat_id: 2, cat_name: "another category name" }
];
};
}])
// categoryNameByIdFilter
app.factory('categoryNameByIdFilter', ['stateFactory', function(stateFactiry){
return function(cat_id){
if (!cat_id) return null;
var cat_obj = _.findWhere(stateFactiry.categories, {
id: cat_id
});
if (!cat_obj) return null;
return cat_obj.cat_name;
};
}]);
怎么样'spy'?这可以在这里使用吗?仍然不是关于'间谍'背后的概念 – Iladarsda 2014-09-11 13:30:00
你可以在这里使用茉莉间谍。不过,我会建议使用Sinon。这是一个梦幻般的JavaScript嘲笑框架。您是否希望我使用茉莉或Sinon间谍来重做解决方案? – Onosa 2014-09-11 13:32:37
是的。这将非常感激。一些背景故事,为什么以及如何将会很好。 – Iladarsda 2014-09-11 13:33:45