我有一个使用 jQuery 的函数,如下所示:
function populate_messages_node() {
$.ajax({url: "/messages", type: "GET", success: populate_recent_messages});
}
我想为此功能编写一个集成测试。我的问题是测试:
function test_simple() {
populate_messages_node();
// assert node content here
}
...不会等待 Ajax 成功方法 (populate_recent_messages) 完成它的工作。对于这个微不足道的例子,做的$.ajaxSetup({async:false})
工作,但我担心这并不总是正确的。对于更复杂的场景,将会有大量这样的测试。
我想我的问题真的是:有没有办法等待 Javascript 中的 XHR/Websocket 操作完成?
我不希望修改生产代码(populate_messages_node),但从 .ajax() 返回 xhr 结果是可以的。(对于没有找到可以准确描述此问题的规范 SO 帖子,我提前道歉。)