与间谍进行单元测试失败。说间谍从未被称为 [英] Unit test with spy is failing. Says spy was never called

查看:176
本文介绍了与间谍进行单元测试失败。说间谍从未被称为的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我正在测试的代码

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'});
    }));
});

为什么会失败?它说


预期的间谍得到了[{userName:'Bob'}]
,但它从来没有名为。

"Expected spy get to have been called with [ { userName : 'Bob' } ] but it was never called".

.toHaveBeenCalled()也失败。

推荐答案

在执行GET请求之前,您不应该设置间谍吗?

Shouldn't you set the spy before doing the GET request?

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模式;)

这篇关于与间谍进行单元测试失败。说间谍从未被称为的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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