【问题标题】:Unit test with spy is failing. Says spy was never called带有间谍的单元测试失败。说间谍从来没有被叫过
【发布时间】:2014-03-03 07:21:41
【问题描述】:

这是我正在测试的代码

eventsApp.factory('userData', ['userResource', function(userResource){
    return{
    getUser: function(userName, callback){
        return userResource.get({userName:userName}, function(user){
        if(callback)
        callback(user);
        });

    };
}]);

这是茉莉花测试

describe('userData', function(){
    var mockUserResource;

    beforeEach(module('eventsApp'));

    beforeEach(function(){
        mockUserResource = {get: function(){} };

        module(function($provide){
            $provide.value('userResource', mockUserResource);
        });
    });

    it('should make a call to userResource.get with provided userName', inject(function(userData){

        userData.getUser('Bob');
        spyOn(mockUserResource, 'get');
        expect(mockUserResource.get).toHaveBeenCalledWith({userName:'Bob'});
    }));
});

为什么会失败?它说

“预期的 spy get 已被调用 [ { userName : 'Bob' } ] 但它从未被调用”。

.toHaveBeenCalled() 也失败了。

【问题讨论】:

    标签: javascript angularjs unit-testing jasmine


    【解决方案1】:

    你不应该在执行 GET 请求之前设置 spy 吗?

    it('should make a call to userResource.get with provided userName', inject(function(userData){
        //arrange
        spyOn(mockUserResource, 'get');
    
        //act
        userData.getUser('Bob');
    
        //assert
        expect(mockUserResource.get).toHaveBeenCalledWith({userName:'Bob'});
    }));
    

    编辑:Arrange-Act-Assert pattern ;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2023-03-20
      • 1970-01-01
      相关资源
      最近更新 更多