Tôi đang sử dụng Jasmine để kiểm tra xem các đối tượng nhất định có được tạo ra hay không và các phương thức được gọi trên chúng.Làm gián điệp một nhà xây dựng bằng cách sử dụng Jasmine
Tôi có một tiện ích jQuery tạo đối tượng lật và gọi phương thức setValue trên chúng. Mã cho flipcounter là ở đây: https://bitbucket.org/cnanney/apple-style-flip-counter/src/13fd00129a41/js/flipcounter.js
các flipcounters được tạo ra sử dụng:
var myFlipCounter = new flipCounter("counter", {inc: 23, pace: 500});
Tôi muốn thử nghiệm rằng flipcounters được tạo ra và phương pháp setValue được gọi vào chúng. Vấn đề của tôi là làm thế nào để tôi gián điệp trên các đối tượng này ngay cả trước khi chúng được tạo ra? Tôi có làm gián điệp về hàm tạo và trả về các đối tượng giả không? Mã mẫu thực sự hữu ích. Cảm ơn bạn đã giúp đỡ! :)
Cập nhật:
Tôi đã thử làm gián điệp trên flipCounter như thế này:
myStub = jasmine.createSpy('myStub');
spyOn(window, 'flipCounter').andReturn(myStub);
//expectation
expect(window.flipCounter).toHaveBeenCalled();
Sau đó, thử nghiệm cho cuộc gọi setValue bởi flipCounter:
spyOn(myStub, 'setValue');
//expectation
expect(myStub.setValue).toHaveBeenCalled();
là người đầu tiên kiểm tra để khởi tạo flipCounter là tốt, nhưng để kiểm tra cuộc gọi setValue, tất cả những gì tôi nhận được là lỗi 'setValue() không tồn tại'. Tôi có làm điều này đúng không? Cảm ơn!
lý do bạn muốn 'gián điệp' trên đó là gì? –
Tôi muốn chắc chắn rằng nó được tạo ra và giá trị thích hợp được thiết lập. – maru