$ window.print上的Jasmine SpyOn无法正常工作

时间:2016-08-03 06:06:45

标签: angularjs jasmine karma-jasmine

我有一个测试用例,旨在检查$ window.print()是否正在调用?

为此,我写了一个以下测试用例:

beforeEach(inject(function($window) {

        Objwindow = $window;
}
it('Test for print', function() {
    spyOn( Objwindow, 'print' ).and.callFake( function() {
        console.log("Spy is called");
        return true;
    });
    scope.printConfirmation();
    expect(Objwindow.print).toHaveBeenCalled();
});

在控制器中:

scope.printConfirmation = function() {
    $window.print()
}

现在,如果我只运行上面的测试用例,它运行成功没有任何错误。就是...... Spyon正在被召唤。 但是,如果我运行所有模块的测试用例(几乎有1325个测试用例),则会抛出以下错误。

 Expected spy print to have been called.

这个问题可能是什么原因?我做错了吗?

1 个答案:

答案 0 :(得分:0)

你必须采取控制器的实例

喜欢var controller = $controller('Controller', { $window: Objwindow });

并且您的测试用例应该在其中

it('Test for print', function() {
spyOn( Objwindow, 'print' ).and.callFake( function() {
    console.log("Spy is called");
    return true;
scope.printConfirmation();
expect(Objwindow.print).toHaveBeenCalled();
});