无法通过简单的验收测试才能正常运行

时间:2015-01-29 01:21:12

标签: ember.js ember-cli

访问将会很好,我看到右下角的实时应用程序页面,但是相同的断言从未发生过,基本上测试总是“正在运行”并且没有任何断言,任何指导都会非常感激,我正在使用ember-cli 0.1.11和ember 1.9.1,我正在测试localhost:4200 / provider / tests我的baseUrl设置为'/ provider /'

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

var application;

module('Acceptance: Login', {
setup: function() {
  application = startApp();
},
teardown: function() {
  Ember.run(application, 'destroy');
}
});

test('visiting /login', function() {
 visit('/login');

andThen(function() {
 equal(currentPath(), 'login');
});
});

我的startApp看起来像这样

 import Ember from 'ember';
 import registerAcceptanceTestHelpers from './201-created/register-acceptance-test-helpers';
 import Application from '../../app';
 import config from '../../config/environment';
 import 'simple-auth-testing/test-helpers';

 export default function startApp(attrs) {
   var application;

   var attributes = Ember.merge({}, config.APP);
    attributes = Ember.merge(attributes, attrs); // use defaults, but you can  override;

  Ember.run(function() {
      application = Application.create(attributes);
      application.setupForTesting();
      registerAcceptanceTestHelpers();
     application.injectTestHelpers();
  });

  return application;
}

3 个答案:

答案 0 :(得分:2)

好的,所以我发现问题与

有关

“我们通过run.later在应用程序中运行了几个预定的计时器

当测试操作(例如点击)超出我们应用程序中的登录时,计时器将启动,所有后续的操作都将被阻止。“

“这导致的问题是Ember.Testing使用的等待直到所有计时器都被执行后再继续运行。由于这个轮询计时器,我的大多数路由都不会发生这种情况。”

这里和这里提到

https://github.com/emberjs/ember.js/issues/3008#issuecomment-73246784

http://discuss.emberjs.com/t/proper-way-to-handler-timers-w-ember-testing/4693

希望这有助于人们

答案 1 :(得分:1)

背景


我遇到了同样的问题,但当我使用ember-cli-coffeescript时。我甚至无法进行简单的综合测试。我的应用程序是使用旧的ember cli生成的,然后我更新了cli版本,但似乎我已弃用测试蓝图生成。我运行了ember new,安装了ember-cli-coffeescript并生成了简单的acceptance-test。我注意到存在一些差异,您无法在application中返回module.setup

解决方案

<小时/> 在CoffeeScript中,显式地从setup hook中返回任何内容:

module 'Acceptance: Login',
  setup: ->
    application = startApp()
    ###
    Don't return as Ember.Application.then is deprecated.
    Newer version of QUnit uses the return value's .then
    function to wait for promises if it exists.
    ###
    return

它是使用正确的钩子等动态生成的,但如果您之前使用的是旧版本,则必须重新安装ember-cli-coffeescript插件:

ember install:addon ember-cli-coffeescript

我希望能解决某些挫折和时间。

答案 2 :(得分:0)

您的测试文件的名称是什么?惯例是在文件名中包含-test后缀。

如果您没有,那么您的文件将不会被识别为测试文件。在您的情况下,它可能是login-test.js

这有帮助吗?