你怎么在模拟一个AngularJS服务茉莉花当单元测试? [英] How do you mock a service in AngularJS when unit testing with jasmine?
本文介绍了你怎么在模拟一个AngularJS服务茉莉花当单元测试?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
让我们说我有一个服务商店
这取决于两个状态的服务进度
和仓库
。我如何注入不同版本的进度
和 warehose
到商店
单元测试?
下面是我的服务:
angular.module('MyModule的')。服务('店',函数(日程安排,仓库){
返回{
canSellSweets:功能(numRequiredSweets){
返回schedule.isShopOpen()
&功放;&安培; (warehouse.numAvailableSweets()> numRequiredSweets);
}
}
});
下面是我的嘲笑:
VAR mockSchedule = {
isShopOpen:函数(){返回true}
}
VAR mockWarehouse = {
numAvailableSweets:函数(){返回10};
}
下面是我的测试:
预期(shop.canSellSweets(5))TOBE(真)。
期待(shop.canSellSweets(20))TOBE(假)。
解决方案
beforeEach(函数(){
模块(函数($提供){
$ provide.value('时间表',mockSchedule);
});
});
Let's say I have a service shop
that depends on two stateful services schedule
and warehouse
. How do I inject different versions of schedule
and warehose
into shop
for unit testing?
Here's my service:
angular.module('myModule').service('shop', function(schedule, warehouse) {
return {
canSellSweets : function(numRequiredSweets){
return schedule.isShopOpen()
&& (warehouse.numAvailableSweets() > numRequiredSweets);
}
}
});
Here are my mocks:
var mockSchedule = {
isShopOpen : function() {return true}
}
var mockWarehouse = {
numAvailableSweets: function(){return 10};
}
Here are my tests:
expect(shop.canSellSweets(5)).toBe(true);
expect(shop.canSellSweets(20)).toBe(false);
解决方案
beforeEach(function () {
module(function ($provide) {
$provide.value('schedule', mockSchedule);
});
});
这篇关于你怎么在模拟一个AngularJS服务茉莉花当单元测试?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文