0
我碰到一個奇怪的問題,寫我的組件集成測試。當我單獨運行每個人時,他們都會通過。當我運行多個,第一個通過,其他人失敗。我認爲這與關閉行動有關,但我不知道。Ember集成測試失敗時,一次運行多個
這裏是我的組件代碼
// components/game-nav-key.js
triggerKeyAction(code) {
if (this.get('prevKeyCode').contains(code)) {
this.sendAction('onPrevKey', true);
} else if (this.get('nextKeyCode').contains(code)) {
this.sendAction('onNextKey', true);
} else if (this.get('openKeyCode').contains(code)) {
this.sendAction('onOpenKey');
}
},
didInsertElement() {
var self = this;
Ember.$('body').keydown(function(e) {
self.triggerKeyAction(e.which);
});
Ember.$('body').keyup(function(e) {
});
}
而且我的測試
// game-nav-key-test.js
it('tracks key commands and sends an action for K', function() {
let spy = sinon.spy();
this.set('gotoPrev', spy);
this.render(hbs`
{{game-nav-key onPrevKey=(action gotoPrev)}}
`);
triggerKeydown($('body'), 75);
triggerKeyup($('body'), 75);
sinon.assert.calledOnce(spy);
sinon.assert.calledWith(spy, true);
});
it('tracks key commands and sends an action for J', function() {
let spy = sinon.spy();
this.set('gotoNext', spy);
this.render(hbs`
{{game-nav-key onNextKey=(action gotoNext)}}
`);
triggerKeydown($('body'), 74);
triggerKeyup($('body'), 74);
sinon.assert.calledOnce(spy);
sinon.assert.calledWith(spy, true);
});
it('tracks key commands and sends an action for R', function() {
let spy = sinon.spy();
this.set('open', spy);
this.render(hbs`
{{game-nav-key onOpenKey=(action open)}}
`);
triggerKeydown($('body'), 82);
triggerKeyup($('body'), 82);
sinon.assert.calledOnce(spy);
});
我刪除了所有beforeEach的,所以它真的只是這三個測試。就像我說過的,每一個都是單獨傳遞的,當它被列在第一位時,但是第二個在一起運行時失敗。請注意,使用console.log
聲明我已經驗證碼點擊上方的每個在各自的測試this.sendAction
電話
貌似創建的行每次組件裝入時都重新綁定偵聽器,並且永遠不會在卸載時解除綁定。 – Interrobang
是的,它做到了!謝謝!想回答,所以我可以標記爲正確的? –