我正在为QUnit中的Ember.js应用程序编写集成测试。在测试之前,我想通过向专门的测试API发出HTTP请求来播种一些测试数据。我使用jQuery.post
发出POST请求,并使用Ember.RSVP.Promise.cast
将jQuery承诺变为RSVP承诺。但是,它似乎从未解决。在下面的代码中,它只是挂起。字符串"STARTING"
已打印,但不打印"DONE"
也不打印"FAIL"
。在QUnit集成测试中无法解析RSVP.Promise
我也尝试创建一个新的RSVP承诺,如http://emberjs.com/api/classes/Ember.RSVP.Promise.html的“高级用法”部分中所述,无济于事(它也被绞死)。如果我不将jQuery承诺包装到RSVP Promise中,它确实会到达"DONE"
或"FAIL"
。
为什么RSVP Promise没有解决?
function create_teacher() {
var url = "<%= testing_teacher_path %>";
return Ember.RSVP.Promise.cast(
Ember.$.post(
url,
{
user: {
first_name: "John",
last_name: "Doe"
school: "EE3",
email: "[email protected]",
password: "password"
}
}
)
);
}
module("Teacher Dashboard", {
setup: function() {
console.log("STARTING");
Ember.run(HstryEd, HstryEd.advanceReadiness);
},
teardown: function() {
console.log("TEARING DOWN");
HstryEd.reset();
}
});
asyncTest("Login", function() {
expect(1);
var teacher = create_teacher();
teacher.then(function() {
console.log("DONE");
ok(true, "done");
start();
},
function() {
console.log("FAIL");
ok(false, "fail");
start();
});
});
使用ic-ajax做了窍门,谢谢! – yorbro