你怎么在模拟一个AngularJS服务茉莉花当单元测试? [英] How do you mock a service in AngularJS when unit testing with jasmine?

查看:106
本文介绍了你怎么在模拟一个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆