Не могу решить ответить.Обещание в тесте интеграции QUnit
Я пишу интеграционный тест для моего Эмбера.применение js в QUnit. Перед экзаменом, я хочу, чтобы семя некоторыми тестовыми данными, путем выдачи HTTP-запросы на специальный API-тестирование. Я использую jQuery.post
для выдачи запросов POST и использую Ember.RSVP.Promise.cast
, чтобы превратить обещание jQuery в обещание RSVP. Однако, похоже, это никогда не разрешится. В приведенном ниже коде он просто висит. Строка "STARTING"
печатается, но ни "DONE"
, ни "FAIL"
не печатается.
Я также попытался создать новое обещание RSVP, как описано в разделе "Advanced раздел "Использование" http://emberjs.com/api/classes/Ember.RSVP.Promise.html , безрезультатно (его тоже повесили). Если я не оберну обещание jQuery в обещание RSVP, оно достигнет либо "DONE"
, либо "FAIL"
.
Почему RSVP не обещает решить проблему?
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: "john@doe.com",
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();
});
});
1 ответ:
Это может быть связано с тем, что Ember runloop отключен в тестовом режиме. Вы проверили
ic-ajax
? https://github.com/instructure/ic-ajax это дает вам многообещающие запросы jQuery ajax в форме, которая нравится Ember, даже в тестировании. Я ввел его, чтобы решить свои проблемы с Ember runloop в тестировании, и до сих пор имел отличные результаты.В качестве альтернативы, вы можете попробовать обернуть свой
teacher.then(..
вEmber.run
.