Ember.js 延迟测试,直到完成Ember.run.later

Ember.js 延迟测试,直到完成Ember.run.later,ember.js,ember-testing,Ember.js,Ember Testing,我正试图通过一些考试来获得一个好成绩。直到昨天我才添加了一些代码,稍后使用Em.run.next在运行循环中运行 这是我在考试中做的事情 visit('/').then(function() { find('bm-select').click(); andThen(function() { equal(1,1, 'yay'); }); }); 问题是,当触发click时,后面的函数将在之后执行。到那时,我所有的测试都完成了,它抛出了错误。我的印象是,然后应该等待所有异步的东

我正试图通过一些考试来获得一个好成绩。直到昨天我才添加了一些代码,稍后使用Em.run.next在运行循环中运行

这是我在考试中做的事情

visit('/').then(function() {
  find('bm-select').click();
  andThen(function() {
    equal(1,1, 'yay');
  });
});
问题是,当触发click时,后面的函数将在之后执行。到那时,我所有的测试都完成了,它抛出了错误。我的印象是,然后应该等待所有异步的东西完成

这就是我的代码在单击触发时的样子单击触发事件

lostFocus: function() {
  if(this.get('isOpen')) {
    Em.run.later(this, function() {
      var focussedElement = document.activeElement;
      var isFocussedOut = 
       this.$().has(focussedElement).length === 0 && !this.$().is(focussedElement);
      if(isFocussedOut) {
        this.closeOptions({focus:false});
      }
    }, 0);
  }
}.on('focusOut'),
您可以看到,它给出了一个错误uncaughttypeerror:cannotreadproperty'has'of undefined。这是来自focusOut方法。当函数执行组件时_状态为“正在销毁”,此.$返回未定义

我尝试了等待助手,但仍然无法让测试正常进行。这通常是如何做到的。
我提取了要在垃圾箱中运行的测试

在进一步调试之后,问题是标签“bm select”的其中一个在测试的拆卸方法中触发了focusOut事件。因此,当运行循环代码执行组件时,该组件不是inDOM

我刚刚在测试应用程序中添加了一个隐藏的输入字段。运行完所有测试后,我将焦点设置为隐藏的输入字段,并使用等待测试助手。现在,所有运行循环代码都在执行分解方法时完成