Tôi đang sử dụng Jasmine 2.1. Tôi đang cố gắng sử dụng Jasmine 2.1 để kiểm tra một mô-đun. Một trong các mô-đun của tôi có một hàm thực hiện mã không đồng bộ. Tôi cần kiểm tra kết quả của hàm khi ứng dụng được thực hiện xong. Có cách nào để làm việc này không? Hiện nay, mô-đun của tôi trông như thế này:Kiểm tra các cuộc gọi lại không đồng bộ với Jasmine
var otherModule = require('otherModule');
function MyModule() {
}
MyModule.prototype.state = '';
MyModule.prototype.execute = function(callback) {
try {
this.state = 'Executing';
var m = new otherModule.Execute(function(err) {
if (err) {
this.state = 'Error';
if (callback) {
callback(err);
}
} else {
this.state = 'Executed';
if (callback) {
callback(null);
}
}
});
} catch (ex) {
this.state = 'Exception';
if (callback) {
callback(ex);
}
}
};
module.exports = MyModule;
Tôi cố gắng để kiểm tra mô-đun của tôi với những điều sau đây:
var MyModule= require('./myModule');
describe("My Module", function() {
var myModule = new MyModule();
it('Execute', function() {
myModule.execute();
expect(myModule.state).toBe('Executed');
});
});
Rõ ràng, kiểm tra không chờ để thực hiện xảy ra. Làm cách nào để kiểm tra chức năng được thực thi không đồng bộ thông qua Jasmine? Ngoài ra, tôi có sử dụng biến trạng thái đúng không? Tôi bị mất trong ngăn xếp không đồng bộ và tôi không chắc chắn nơi tôi có thể sử dụng 'this
'.
Bạn có chắc chắn rằng chúng ta có thể sử dụng 'mong đợi (...) Tobe (... .) 'bên trong của gọi lại async? –
Chỉ cần kiểm tra, yep, cho Jasmine 2.1 nó hoạt động tốt. Đối với hoa nhài trước 2.0, hỗ trợ async trông hoàn toàn khác nhau. –
@VlasBashynskyi có, hoa nhài bây giờ có hỗ trợ không đồng bộ. Nó sẽ đợi cho đến khi 'done()' được gọi. (Thời gian chờ 5 giây theo mặc định) – Hlung