Ember.js中的验收测试会更改地址栏中的URL

时间:2015-06-22 19:18:07

标签: testing ember.js ember-cli

这几天来一直是个烦人的问题。当我开始尝试为我的Ember应用程序编写验收测试时,当我使用visit()函数时,URL会在浏览器的地址栏中更改,因此当我更改一些代码和liveReload时碰巧,它会从我的测试页面导航到我告诉它在测试中访问的任何页面。

要进行问题排查,我ember new了一个新应用,创建了/ home路由和模板,并为其创建了验收测试,并且传递正常,而不更改地址栏中的URL。我已对tests/helpers中的代码进行了比较,结果与tests/index.html相同。

我在没有得到答案的情况下搜遍了所有人。这对我来说已经足够难以进行测试了,但是像这样的问题只是切线,但非常恼人。如果有人知道为什么会发生这种情况,我会非常感谢你的解决方案。

举个例子,这是我的验收测试。它通过,但URL实际上发生了变化:

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

var application;

module('Acceptance: AddMilestone', {
  beforeEach: function() {
    application = startApp();
  },

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

test('Adding milestones', function(assert) 
  visit('/projects/1234567/details');

  andThen(function() {
    assert.equal(currentPath(), 'project.details');
  });
});

1 个答案:

答案 0 :(得分:6)

config/environment.js中查找与此类似的块:

if (environment === 'test') {
  // Testem prefers this...
  ENV.baseURL = '/';
  ENV.locationType = 'none';

  // keep test console output quieter
  ENV.APP.LOG_ACTIVE_GENERATION = false;
  ENV.APP.LOG_VIEW_LOOKUPS = false;

  ENV.APP.rootElement = '#ember-testing';
}

ENV.locationType环境的none设置为test吗?

如果没有,您是否正在更改应用中其他位置的locationType?将其设置为none只会留下地址栏。