Ember.JS应用程序的Qunit验收测试通过浏览器传递但在CLI中通过PhantomJS失败

时间:2015-06-23 19:29:19

标签: javascript ember.js phantomjs qunit

我正在处理Ember-CLI-101 ebook并且遇到一个小问题,我已经开始编写接受(集成/功能)测试,并且我已经进入了根路径的测试然后单击标题上的链接然后填写表格。

当我转到http://localhost:4200/tests时它会起作用,但当我在CLI中ember test时,它会失败,并显示以下错误:

actual: >
false
expected: >
true
message: >
Error: Element a[href="/friends/new"] not found.
Log: >

我认为这是某种PhantomJS问题,页面加载不正确,但它可能是我想的任何东西。我很难在网上找到解决方案,并希望得到任何帮助。

测试:

import Ember from 'ember';
import { module, test } from 'qunit';
import startApp from '../../helpers/start-app';

var application;

module('Acceptance | friends/new', {
  beforeEach: function() {
    application = startApp();
  },

  afterEach: function() {
    Ember.run(application, 'destroy');
  }
});

test('creating a new friend', function(assert){
  visit('/');
  click('a[href="/friends/new"]');

  andThen(function(){
    assert.equal(currentPath(), 'friends.new');
  });
  fillIn('input[placeholder="First Name"]', 'Johnny');
  fillIn('input[placeholder="Last Name"]', 'Cash');
  fillIn('input[placeholder="email"]', 'j@cash.com');
  fillIn('input[placeholder="twitter"]', 'jcash');
  click('input[value="Save"]');

  andThen(function(){
    assert.equal(
      currentRouteName(),
      'friends.show.index',
      'Redirects to friends.show after create'
    );
  });
});

这是页面上的标题:

<nav>
  {{link-to "Ember-Borrowers" "index" class="main"}}

  <input id="bmenu" class="burgercheck" type="checkbox">
  <label for="bmenu" class="burgermenu"></label>

  <div class="menu">
    {{link-to "Dashboard" "index" class="icon-gauge"}}
    {{link-to "Friends" "friends" class="icon=users-1"}}
    {{link-to "New Friend" "friends.new" class="icon-user-add"}}
  </div>
</nav>

这是生成的HTML:

<a id="ember471" class="ember-view icon-user-add" href="/friends/new">New Friend</a>

正如我所说,它在浏览器中传递。

编辑:

令我困惑的是,以下测试工作正常,也点击链接。不同之处在于此链接位于正文中,而上述(失败)测试的链接位于标题中:

test('clicking save without filling fields', function(assert){
  visit('/friends/new');
  click('input[value="Save"]');

  andThen(function(){
    assert.equal(
      currentRouteName(),
      'friends.new',
      'Stays on new page'
    );
    assert.equal(
      find("h2:contains(You have to fill in all the fields)").length,
      1,
      "displays error message"
    );
  });
});

编辑2:

我尝试在index.html的主体中放置一个链接,以测试它是否是标题(导航栏),但它仍然不起作用。我使用<a href="/friends/new" class="icon-user-add"></a>并仍然获得Error: Element a[href="/friends/new"] not found.

编辑3:

My Git repo is here

0 个答案:

没有答案