Ember.js Can';在QUnit集成测试中解决RSVP承诺

Ember.js Can';在QUnit集成测试中解决RSVP承诺,ember.js,qunit,ember-testing,Ember.js,Qunit,Ember Testing,我正在为我的Ember.js应用程序编写一个集成测试。在测试之前,我想通过向专用测试API发出HTTP请求来为一些测试数据播种。我使用jQuery.post发出post请求,并使用Ember.RSVP.Promise.cast将jQuery承诺转换为RSVP承诺。然而,它似乎从未解决。在下面的代码中,它只是挂起。打印字符串“start”,但既不打印“DONE”也不打印“FAIL” 我还尝试创建一个新的RSVP承诺,如的“高级用法”部分所述,但没有成功(它也被挂起)。如果我没有将jQuery承诺包

我正在为我的Ember.js应用程序编写一个集成测试。在测试之前,我想通过向专用测试API发出HTTP请求来为一些测试数据播种。我使用
jQuery.post
发出post请求,并使用
Ember.RSVP.Promise.cast
将jQuery承诺转换为RSVP承诺。然而,它似乎从未解决。在下面的代码中,它只是挂起。打印字符串
“start”
,但既不打印
“DONE”
也不打印
“FAIL”

我还尝试创建一个新的RSVP承诺,如的“高级用法”部分所述,但没有成功(它也被挂起)。如果我没有将jQuery承诺包装成RSVP承诺,那么它会达到
的“完成”或
的“失败”

为什么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();
  });
});
函数create_teacher(){
var url=“”;
返回Ember.RSVP.Promise.cast(
余烬。$邮政(
网址,
{
用户:{
名字:“约翰”,
姓氏:“Doe”
学校:“EE3”,
电子邮件:“john@doe.com",
密码:“密码”
}
}
)
);
}
模块(“教师仪表板”{
设置:函数(){
控制台日志(“启动”);
余烬运行(HstryEd,HstryEd.advanceReadiness);
},
拆卸:函数(){
控制台日志(“拆卸”);
HstryEd.reset();
}
});
异步测试(“登录”,函数(){
期望(1);
var teacher=create_teacher();
老师。那么(函数(){
控制台日志(“完成”);
ok(正确,“完成”);
start();
},
函数(){
控制台日志(“失败”);
ok(false,“fail”);
start();
});
});

这可能与在测试模式下禁用Ember运行循环有关。您是否签出了icajax
?它以Ember喜欢的形式为您提供promise风格的jQueryAjax请求,即使在测试中也是如此。我使用它来解决测试中的余烬运行循环问题,到目前为止已经取得了很大的成果

或者,您可以尝试包装您的
老师。然后(..
Ember.run
中运行