Ember-cli集成点击 - 类型错误undefined不是一个函数

时间:2014-11-06 14:23:44

标签: ember.js ember-cli ember-qunit

我有一个新的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'
      });
    }
  }
});

如果有人能告诉我我做错了什么或为什么这个点击事件没有解雇(或找不到),我将非常感激。

非常感谢

1 个答案:

答案 0 :(得分:0)

尝试将按钮的id传递给click helper而不是类。如果你有几个带有该类名的元素,我不确定点击助手如何解决点击的内容。

变化:

click('.guestmodal');

click('#guestModalBtn')