我尝试在sypOn
中的多个Jasmine 1.4.1
来电中返回不同的值。我根据答案here得到以下代码:
beforeEach(function (done) {
loadFixtures('fixture.html');
spyOn(dynamicContent, 'get').and.returnValues($ver1.getHtml(done),
$ver2.getHtml(done));
});
修改
我意识到以上是适用于Jasmine 2.4及以上版本。
我还尝试了旧版本的其他答案,但我遇到了同样的问题。
var alreadyCalled = false;
spyOn(dynamicContent, "get").and.callFake(function() {
if (alreadyCalled) return $ver1.getHtml(done);
alreadyCalled = true;
return $ver2.getHtml(done);
});
我应该指出我正在使用jasmine-jquery
。
我的getHtml
函数看起来像这样,并且在测试时是相同的:
function getHtml(done) {
var deferred = $.Deferred();
$.get('some.html').then(function (data) {
// will only make it this far for the first call to getHtml()
deferred.resolve(data);
done();
});
return deferred.promise();
}
问题是只有第一次调用spyOn
才能成功。
我想知道这是否是由于我将done
传递给函数并在getHtml()中解析它的方式
如何确保在后续调用间谍时返回两个async
调用?