Ember.js 延迟测试,直到完成Ember.run.later
我正试图通过一些考试来获得一个好成绩。直到昨天我才添加了一些代码,稍后使用Em.run.next在运行循环中运行 这是我在考试中做的事情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时,后面的函数将在之后执行。到那时,我所有的测试都完成了,它抛出了错误。我的印象是,然后应该等待所有异步的东
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 我刚刚在测试应用程序中添加了一个隐藏的输入字段。运行完所有测试后,我将焦点设置为隐藏的输入字段,并使用等待测试助手。现在,所有运行循环代码都在执行分解方法时完成