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

Testing js中的验收测试会更改地址栏中的URL,testing,ember.js,ember-cli,Testing,Ember.js,Ember Cli,这几天来一直是一个令人讨厌的问题。当我开始尝试为我的Ember应用程序编写验收测试时,当我使用visit()函数时,浏览器地址栏中的URL会发生更改,因此当我更改一点代码并且liveReload发生时,它会从我的测试页面导航到我在测试中告诉它访问的任何页面 为了排除故障,我创建了一个新的应用程序,创建了一个/home路由和模板,并为它创建了一个验收测试,它通过了良好的测试,而没有更改地址栏中的URL。我比较了tests/helpers中的代码,结果与tests/index.html中的代码相同

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

为了排除故障,我创建了一个新的应用程序,创建了一个/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');
  });
});

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';
}
对于您的
test
环境,
ENV.locationType
是否设置为
none


如果没有,您是否正在更改应用程序中其他位置的
locationType
?将其设置为
none
会使地址栏不受影响。

我的设置为
auto
请尝试将其设置为
none
进行
测试。这应该可以解决问题。这很有效,谢谢!我也必须使用
--environment=test
运行,因为
local
没有任何区别,即使位置设置为none。@redoctorber13您的评论就是我问题的解决方案。我必须在另一个端口上以测试模式启动一个单独的ember cli服务器,以便在不更改端口的情况下运行测试url@ChristopherMilne您是否有任何关于如何设置单独服务器的资源/链接/文章?我发现,如果您在路由中执行任何重定向,将中断验收测试,您将需要运行单独的cli服务器在不同的端口上,并根据下面的注释将环境标志设置为“测试”。理解问题原因的关键是要认识到,由于位置类型是您在“开发”模式下设置的位置类型,您的应用程序中的路由正在破坏验收测试。。。