6
Jasmine 2.1을 사용하고 있습니다. Jasmine 2.1을 사용하여 모듈을 테스트하려고합니다. 내 모듈 중 하나는 코드를 비동기 적으로 실행하는 함수를 가지고 있습니다. 앱 실행이 완료되면 함수의 결과를 테스트해야합니다. 이것을 할 수있는 방법이 있습니까? 현재 내 모듈은 다음과 같습니다 : 나는 다음 내 모듈을 테스트하기 위해 노력하고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;
:
var MyModule= require('./myModule');
describe("My Module", function() {
var myModule = new MyModule();
it('Execute', function() {
myModule.execute();
expect(myModule.state).toBe('Executed');
});
});
분명히, 테스트가 실행이 발생하는 대기하지 않습니다. Jasmine을 통해 비동기 실행 함수를 테스트하려면 어떻게해야합니까? 또한 상태 변수를 올바르게 사용합니까? 비동기식 스택에서 길을 잃고 'this
'을 사용할 수 있는지 확실하지 않습니다.
당신은 우리가'사용 (...)을 기대할 수 있다는 확신 도베을 (... .)'비동기 콜백 내부? –
Jasmine 2.1에서 제대로 작동하는지 확인했습니다. 2.0 이전의 jasmine에서는 비동기 지원이 완전히 다른 것처럼 보입니다. –
@VlasBashynskyi 예, jasmine에 비동기 지원이 추가되었습니다. 'done()'이 호출 될 때까지 기다릴 것이다. (기본적으로 5 초 제한 시간) – Hlung