新しい ember-cli アプリケーションがあり、ページ上のボタンをクリックしてモーダル ウィンドウを表示する (またはボタンをクリックした後にその存在を確認する) 統合テストをセットアップしています。
これは統合テストです:
import { test } from 'ember-qunit';
import Ember from 'ember';
import startApp from '../helpers/start-app';
var App;
module('Integration Test - Guest Page', {
setup: function(){
App = startApp();
},
teardown: function(){
Ember.run(App, 'destroy');
}
});
test('guest login modal loads after click', function() {
expect(3);
visit('/guest');
andThen(function() {
var $modalLink = $("button#guestModalBtn"),
$modalWindow = $(".modal", "div");
ok(find($modalLink).length, 'guestModalBtn is present');
ok(!find($modalWindow).length, 'guest modal element IS NOT present');
click('.guestmodal');
});
});
click() リクエストにヒットするとすぐに、テストは失敗します。
TypeError: undefined is not a function
私がオンラインで見たすべての例には、このメソッドが含まれています。私が取り出したのは間違いなくクリックであり、QUnit ではすべての結果が緑色です。
これは問題のルートにロードされているテンプレートです:
{{outlet}}
<button id="guestModalBtn"
class="guestmodal"
{{action 'showModal' 'guest-details-modal' model}}>
Guest Details
</button>
以下のコメント (ありがとう) に応えて、showModal アクションは、以下に示す routes/application.js ファイルから派生します。
import Ember from 'ember';
export default Ember.Route.extend({
actions: {
showModal: function(name, content) {
this.controllerFor(name).set('content', content);
this.render(name, {
into: 'application',
outlet: 'modal'
});
},
removeModal: function() {
this.disconnectOutlet({
outlet: 'modal',
parentView: 'application'
});
}
}
});
私が何を間違っているのか、またはこのクリックイベントが発生しない (または見つからない) 理由を誰かに教えてもらえれば、非常に感謝しています。
どうもありがとう