茉莉花模拟第二种方法

jasmine mock second method

本文关键字:二种 方法 模拟 茉莉花      更新时间:2023-09-26

我正在尝试在茉莉花中做以下事情,但不确定是否可能:

我得到了一个包含 2 个方法的服务对象,A 和 B。方法 A 调用方法 B(B 实际上是一个$http调用,我不想在测试期间执行:我想模拟它)。

在我的"之前每个"部分中,我都这样做: spyOn(Serviceinstance, 'B').and.callFake(function(){ return true; });

在我的测试中:

var result = Serviceinstance.A();
expect(result).toBeTrue();

当然,B 的真实代码返回 false。我的问题是我的测试总是失败。间谍中提供的函数永远不会被方法 A 调用。另一方面,如果我这样称呼B:

var result = Serviceinstance.B();

然后调用间谍的功能,我的测试通过。

那么我应该像这样修改我的实例吗:

Serviceinstance.B = function(){return true;}

因为茉莉花不能模拟调用堆栈的"第二"级别?(对我来说似乎完全不太可能)

我肯定错过了一些东西....

这是一个有效的代码:

describe('Service test suite', function() {
    it('should return true', function() {
        var Serviceinstance = new Service();
        spyOn(Serviceinstance, 'B').and.callFake(function() {
            return true;
        });
        expect(Serviceinstance.A()).toBe(true);
    })
});

https://jsfiddle.net/ronapelbaum/9moLhhbr/

相关文章: