1

我正在尝试使用间谍来观察何时进行 functino 调用。我无法让它与我的代码一起使用。

我的测试

            it("calls the totalBogof() function", function() {
                spyOn(basket(), "totalBogof");
                basket().total();
                expect(basket.totalBogof).toHaveBeenCalled();
            });

我正在尝试测试的代码:

basket.prototype = {
    total: function(){
       var total=0.00;
       for(var i=0; i<shoppingBasket.length; i++){
            total += shoppingBasket[i].price;  
        }
         $('#total').html('total = '+currency+total.toFixed(2));
         this.totalBogof(total);
    },
    totalBogof: function(total){
         totalMinBOGOF = total - this.calcBOGOF();
         $('#total-bogof').html('Total - BOGOF = ' + currency + totalMinBOGOF.toFixed(2));
         this.totalPercentageDiscount(totalMinBOGOF, 10);
    },
}

我得到的错误是:

5 specs, 1 failureSpec List | Failures
shoppingBasket calls the totalBogof() function
Error: Expected a spy, but got undefined.
Error: Expected a spy, but got undefined.
 at compare     (https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.4.1/jasmine.js:3083:17)
 at Expectation.toHaveBeenCalled     (https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.4.1/jasmine.js:1480:35)
 at Object.<anonymous> (file:///C:/Users/G/shoppingbasket-jasmine/shopping-basket.js:56:47)
 at attemptSync     (https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.4.1/jasmine.js:1886:24)
 at QueueRunner.run     (https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.4.1/jasmine.js:1874:9)
 at QueueRunner.execute (https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.4.1/jasmine.js:1859:10)
 at Spec.queueRunnerFactory (https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.4.1/jasmine.js:697:35)
 at Spec.execute (https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.4.1/jasmine.js:359:10)
 at Object.fn (https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.4.1/jasmine.js:2479:37)
 at attemptAsync (https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.4.1/jasmine.js:1916:24)

有什么想法我需要做些什么来解决这个问题?

4

1 回答 1

3

你试过这个吗?查看间谍文档

it("calls the totalBogof() function", function() {
   spyOn(basket, "totalBogof");
   basket.total();
   expect(basket.totalBogof).toHaveBeenCalled();
});
于 2016-11-08T20:30:40.580 回答