Testing js中的验收测试会更改地址栏中的URL
这几天来一直是一个令人讨厌的问题。当我开始尝试为我的Ember应用程序编写验收测试时,当我使用Testing js中的验收测试会更改地址栏中的URL,testing,ember.js,ember-cli,Testing,Ember.js,Ember Cli,这几天来一直是一个令人讨厌的问题。当我开始尝试为我的Ember应用程序编写验收测试时,当我使用visit()函数时,浏览器地址栏中的URL会发生更改,因此当我更改一点代码并且liveReload发生时,它会从我的测试页面导航到我在测试中告诉它访问的任何页面 为了排除故障,我创建了一个新的应用程序,创建了一个/home路由和模板,并为它创建了一个验收测试,它通过了良好的测试,而没有更改地址栏中的URL。我比较了tests/helpers中的代码,结果与tests/index.html中的代码相同
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服务器在不同的端口上,并根据下面的注释将环境标志设置为“测试”。理解问题原因的关键是要认识到,由于位置类型是您在“开发”模式下设置的位置类型,您的应用程序中的路由正在破坏验收测试。。。