灰烬摩卡测试失败的异步(使用烬 - 摩卡适配器)(Ember Mocha tests fail wh

2019-10-19 07:51发布

我不能让摩卡与Ember工作原因在于当执行以下性质的测试失败的事实:

describe('Location Panel', function () {
  beforeEach(function () {
    App.reset();
    visit('/map/41.76721,-72.66907');
  });

  it('Have proper address', function () {
    var $title = find('.panel-header h2');
    expect($title).to.have.text('476 Columbus Blvd, Hartford');
  });
});

基本上,它找不到任何的DOM元素,因为它运行之前的路线完成加载测试..如果我同样的情况, visit从测试中,并使用andThen等。

这里有一个jsbin进行调试。

编辑

在jsbin,我使用的是嘲笑Ajax调用,但在我的测试Ajax调用是真实的。 我使用的Ember.$.ajax包裹在以下几点:

function ajax (url, options) {
  return new Ember.RSVP.Promise(function (resolve, reject) {
    options = options || {};
    options.url = url;

    options.success = function (data) {
      Ember.run(null, resolve, data);
    };

    options.error = function (jqxhr, status, something) {
      Ember.run(null, reject, arguments);
    };

    Ember.$.ajax(options);
  });
}

我应该使用Ember.run.later呢?

Answer 1:

您应该使用Ember.run.later代替setTimeout ,以便wait助手知道它应该等待。

或者您可以使用Ember.test.registerWaiter虽然我不认为你需要在这里。

更新JSBIN: http://emberjs.jsbin.com/gahe/1/edit



文章来源: Ember Mocha tests fail when async (using ember-mocha-adapter)