나는 sinn과 함께 QUnit을 사용합니다. sinone의 fakeserver을 동일한 방법으로 만든 체인 아약스에 어떻게 응답 할 수 있습니까?Sinonjs fakeerver - 여러 아약스 호출
module('demo', {
beforeEach: function(){
this.server = sinon.fakeServer.create();
},
afterEach: function(){
this.server.restore();
}
});
test('chained ajax calls', function(assert){
this.server.respondWith('GET', '/foo', [200,
{ 'Content-Type': 'application/json' }, '{ "foo": 1 }' ]);
this.server.respondWith('GET', '/bar', [200,
{ 'Content-Type': 'application/json' }, '{ "bar": 1 }' ]);
var successCount = 0;
$.get('/foo', function(data){
successCount++;
$.get('/bar', function(){
console.log('bar success');
successCount++;
});
});
this.server.respond();
assert.strictEqual(successCount, 2);
});
위의 문제점은 위의 방법 중 하나에서만 응답을 얻을 수 있다는 것입니다. fakeerver가이 문제를 처리 할 수 있습니까?
업데이트 :server.respond()
을 추가하면 문제가 해결됩니다. 그러나 더 좋은 방법이 있어야합니다, 그렇죠?
server.respond();
워드 프로세서에 따르면, 하나의 호출과 같은해야 작업에 관계없이 아약스 호출 횟수의 소리 대기중인 비동기 요청이 모두 응답을 받도록합니다.
는 바이올린 : http://jsfiddle.net/3qj20r5m/1/
오, 나는 가짜 호출이 동기식으로 실행되었다고 생각했기 때문에'assert.async'를 사용하지 않았습니다. 동기식으로 호출을 실행하는 방법이 있습니까? – filur
정교하게 설명하자면, 단일 AJAX 호출이있는 모든 샘플에서 QUINIT를 중지하지 않고 응답을 기다릴 수있는 것처럼 보입니다 (예 : http://www.kenpowers.net/blog/advanced-features-in-sinon/ " '단언, 단언을 다시하십시오. 모든 것이 동기입니다. '). 그러나 위와 같이 중첩 된 호출을 사용하면 QUnit을 대기시켜야하는 것처럼 보입니다. – filur
예제를 실제 코드에 가깝도록 업데이트했습니다. 호출은 실제로 중첩됩니다. 아마도 그것이 문제일까요? – filur