【发布时间】:2020-03-20 16:35:03
【问题描述】:
这是我的 js 文件:
My.File = {
someMethod: function() {
var finalURL = "https://some.url.com"
var somePostCall = $.post(My.URL, {
sessionToken: My.Session.sessionToken
});
somePostCall.done(function(response) {
//do something with the response ===> I want to test this function, and mock the 'response'
});
}
}
我要做的是编写一个测试,涵盖在“完成”调用中传递的函数。我不想进行实际的 ajax 调用,我想从 http 调用中获取响应,并且仍然希望 somePostCall 承诺被调用。而当“完成”方法时,“响应”必须用我编造的东西来嘲笑。
我一直在尝试捕获来自 $.post 调用的响应。像这样:
spyOn($, 'post').and.callThrough();
My.File.someMethod();
var promise = $.post.calls.mostRecent().args[0];
问题是 .args[0] 没有从 $.post 返回值,它只是传递的参数。如果我可以监视来自 $.post 的响应,那么我可以监视它,并捕获传递给“完成”方法的函数。这样我至少可以手动调用它,并传递一个模拟的“响应”。
有什么想法吗?
【问题讨论】:
标签: javascript testing jasmine karma-jasmine karma-runner