Ember集成测试没有看到DOM

时间:2015-10-20 23:00:49

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

import Ember from 'ember';
import startApp from '../../helpers/start-app';

var App;

module('Integration | Authentication | Abilities', {
  integration: true,
  setup() {
    App = startApp();
  },
  teardown() {
    Ember.run(App, 'destroy');
  }
});

test('Only SuperUsers, Researchers and AccountHolders can see messages', function(assert) {
  visit('/');
  assert.equal(find('div').text(), 'fsfsfd');
});

这是一个集成测试,我正在努力工作,所以我可以测试我们的ember-cli应用程序中的基本用户交互。问题是这个简单的测试只会在我搜索DOM时返回空字符串。它没有击中未经授权的页面或任何它只是从任何testHelpers返回任何东西。 currentURLcurrentPath返回undefined。

在理解集成测试的工作原理时,我是否遗漏了一些绝对基本的东西?

我正在尝试测试ember-can如何基于其标题给予和拒绝用户权限。但是,我可能只是测试徽标是否显示在右上角,因为我目前无法在页面上看到任何内容。

2 个答案:

答案 0 :(得分:0)

我认为你缺少的是测试是异步的。转换涉及承诺(通常是加载模型),因此您需要等待visit完成。您可以使用andThen帮助程序:

test('Only SuperUsers, Researchers and AccountHolders can see messages', function(assert) {
  visit('/');

  andThen(function() {
    assert.equal(find('div').text(), 'fsfsfd');
  });
});

Here's more info in the guides

答案 1 :(得分:0)

我发帖是因为事实证明问题是我们的网站使用rootURL设置的方式。我必须将此行放在startApp.js文件中:setResolver(Ember.DefaultResolver.create({ namespace: "/cli/ea/" }));

看起来解析器将我带到localhost:4201 /实际上并没有被使用,因为我们是从rails(localhost:3000)代理的。因此,没有任何东西从任何DOM交互回来,因为没有路由,也没有模板集。 currentURL和其他帮助者返回undefined我猜是唯一一个在后见之明不同寻常的作品。