Tôi đang sử dụng một điệp viên Jasmine (2.2.0) để xem có một cuộc gọi lại nào đó được gọi hay không.Đặt lại cuộc gọi trên điệp viên Jasmine không trả lại
mã kiểm tra:
it('tests', function(done) {
var spy = jasmine.createSpy('mySpy');
objectUnderTest.someFunction(spy).then(function() {
expect(spy).toHaveBeenCalled();
done();
});
});
này hoạt động như mong đợi. Nhưng bây giờ, tôi đang thêm một cấp độ thứ hai:
it('tests deeper', function(done) {
var spy = jasmine.createSpy('mySpy');
objectUnderTest.someFunction(spy).then(function() {
expect(spy).toHaveBeenCalled();
spy.reset();
return objectUnderTest.someFunction(spy);
}).then(function() {
expect(spy.toHaveBeenCalled());
expect(spy.callCount).toBe(1);
done();
});
});
Kiểm tra này không bao giờ trả về, vì dường như cuộc gọi lại done
không bao giờ được gọi. Nếu tôi xóa dòng spy.reset()
, kiểm tra sẽ kết thúc, nhưng rõ ràng là không thành công trên kỳ vọng cuối cùng. Tuy nhiên, trường callCount
có vẻ là undefined
, thay vì 2
.
là nó ném? –
Thử thêm trình xử lý từ chối cho lời hứa của bạn. – robertklep
đã thêm '.catch (done)' vào cuối chuỗi, cùng một vấn đề xảy ra. Vì vậy, @Daniel, nếu nó ném tôi không thể phát hiện ra nó. – Jorn