我有一个新的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');
});
});
一旦点击()请求,测试就会失败:
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'
});
}
}
});
如果有人能告诉我我做错了什么,或者为什么这个点击事件没有被触发(或发现),我将不胜感激。
非常感谢
尝试将按钮的id传递给click助手,而不是类。如果您有几个具有该类名的元素,我不确定单击助手将如何解析要单击的内容。
更改:
click('.guestmodal');
至
click('#guestModalBtn')