dfd.callback
자체가 실행될 때까지 아무 것도 실행하지 않습니다. 인수가 오류 일 수있는 Node.js 스타일 콜백 (예 : function (error, result) {}
)이 아닌 약속 콜백 (예 : promise.then
에 전달 된 함수) 용으로 설계되었습니다. 인수로 오류가 전달되었는지 확인하지 않습니다.
무엇이 conn
인지 알지 못하지만, 약속이 아예없는 것에 대한 인수로 dfd.callback
을 전달하는 방법을 본다면 의심 스럽습니다. Node.js 스타일 콜백을 사용하려고 시도 중이며 호출이 즉시 오류가 발생하고 있습니다. 우리는 약속 인터페이스로 변환 할 수있는 미래에 콜백 이러한 유형의 간이 래퍼를 제공 할 수 있지만, 그때까지, 당신은 아마 같은 것을 수행해야합니다 conn
이 무엇인지 모른 채,
it('should connect in 5 seconds', function() {
var dfd = this.async(5000);
conn.connect(credentials, dfd.callback(function(error, result) {
if (error) {
throw error;
}
expect(result).to.... something
}));
});
그렇지 않으면를 당신의 실제 주장이 무엇인지 보면서,이 문제가 무엇인지 말하기는 너무 어렵습니다. 콜백 내부의 아무 것도 오류를 throw하지 않는 한 테스트는 성공한 것으로 간주됩니다.
편집 : 위의 사용자 의견에 따르면 콜백은 다른 정보를 여러 번 호출하는 이벤트 수신기입니다. 이 경우, 당신이 할 수있는 것은이 같은 것입니다 : 자동으로 약속 해결되지 않는 단지를 제외하고 dfd.callback
같은
it('should connect in 5 seconds', function() {
var dfd = this.async(5000);
conn.connect(credentials, dfd.rejectOnError(function (result) {
if (result !== 'what I want') {
return;
}
expect(result).to.... something
// all other tests…
// nothing threw an error, so it is a successful test
dfd.resolve();
}));
});
dfd.rejectOnError
작품; 너는 결국 너 자신을 그렇게 해.
콜백 _is_이 예상대로 호출되고 콜백 내의 어설 션이 발생하기 때문에 테스트가 통과 한 것일 수 있습니까? 콜백이 호출되지 않았 음을 확인한 것 같습니다. 그냥 생각. – bitpshr
음,'conn.connect'는 비동기 요청을 수행해야하지만 콜백은 XMLHttpRequest가 발생하기 전에 트리거됩니다. –
글쎄, 나는 연결이 설정되기 전에 콜백이 발생했다는 것을 알아 냈다. 그러나'result' 변수는 상태를 유지하므로 상태가 일정한 값일 때만 검사해야합니다. '내 사건이 아니고, 다른 결과를 쳤을 때 다시 콜백을 부르는 것'과 같은 말을 할 수 있습니까? –