ฉันมีบริการเชิงมุมที่เรียกว่าrequestNotificationChannel
:
app.factory("requestNotificationChannel", function($rootScope) {
var _DELETE_MESSAGE_ = "_DELETE_MESSAGE_";
function deleteMessage(id, index) {
$rootScope.$broadcast(_DELETE_MESSAGE_, { id: id, index: index });
};
return {
deleteMessage: deleteMessage
};
});
ฉันพยายามทดสอบบริการโดยใช้ดอกมะลิ:
"use strict";
describe("Request Notification Channel", function() {
var requestNotificationChannel, rootScope, scope;
beforeEach(function(_requestNotificationChannel_) {
module("messageAppModule");
inject(function($injector, _requestNotificationChannel_) {
rootScope = $injector.get("$rootScope");
scope = rootScope.$new();
requestNotificationChannel = _requestNotificationChannel_;
})
spyOn(rootScope, '$broadcast');
});
it("should broadcast delete message notification", function(done) {
requestNotificationChannel.deleteMessage(1, 4);
expect(rootScope.$broadcast).toHaveBeenCalledWith("_DELETE_MESSAGE_", { id: 1, index: 4 });
done();
});
});
ฉันอ่านเกี่ยวกับการสนับสนุนแบบอะซิงโครนัสในจัสมิน แต่เนื่องจากฉันค่อนข้างใหม่กับการทดสอบหน่วยด้วย javascript ไม่สามารถทำงานได้
ฉันได้รับข้อผิดพลาด:
Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL
และการทดสอบของฉันใช้เวลานานเกินไปในการดำเนินการ (ประมาณ 5 วินาที)
บางคนสามารถช่วยฉันอธิบายตัวอย่างการทำงานของโค้ดของฉันพร้อมคำอธิบายได้ไหม
Jest
คาด - พบได้บ่อยมากขณะทำการดีบักและใช้เวลาสักครู่เพื่อตรวจสอบตัวแปร
afterEach
ขั้นตอนที่จะล้างฐานข้อมูล (โดยใช้deleteMany
วิธีการ) การเพิ่มjest.setTimeout(30000);
ในbeforeAll
วิธีดูเหมือนจะแก้ไขสิ่งนี้สำหรับฉัน - ฉันเดาเนื่องจากการลบฐานข้อมูลเป็นการโทรผ่านเครือข่าย (ภายในเงื่อนไข) บางครั้งใช้เวลานานกว่า 3 วินาทีและการขว้าง