Testing 测试Ember.js应用程序时如何模拟后退按钮?
在我的验收测试中,我想模拟“后退”按钮单击和结果转换 我有以下几点,但我觉得这是不对的Testing 测试Ember.js应用程序时如何模拟后退按钮?,testing,ember.js,Testing,Ember.js,在我的验收测试中,我想模拟“后退”按钮单击和结果转换 我有以下几点,但我觉得这是不对的 test("back to search page", function(){ visit('/') .then(function(){ return fillIn('.search input', 'hi'); }) .then(function(){ return click('.search button'); }) .then(fun
test("back to search page", function(){
visit('/')
.then(function(){
return fillIn('.search input', 'hi');
})
.then(function(){
return click('.search button');
})
.then(function(){
// I want to go back here
return visit('/');
})
.then(function(){
var keyword = find('.search input').val();
equal(keyword, '');
ok(!exists('.search .results'));
});
})
在测试中模拟后退按钮的正确方法是什么?
window.history.back()
或window.history.go(-1)
要使window.history.back()
工作,您需要在路由器中使用位置:'hash'
App.Router.reopen({
location: 'hash'
});
以下是有关设置位置类型的官方文档:我编写了测试帮助程序来模拟后退和前进浏览器导航按钮,并将其作为ember cli插件发布:
它们公开了3个测试帮助程序:backButton
,forwardButton
,setupbrowsernavigationbutton
。最后一个所有者注册一个服务,该服务记录位置更改并使用转换返回或前进
它还适用于默认的位置:“none”
这在用于测试时不起作用,因为它强制整个窗口后退1,而不是路由。它基本上会把它带到另一个页面,这是因为默认情况下测试使用的是一个完全不跟踪历史的位置。如果要测试back功能或执行当前正在执行的操作,您必须将位置更改为HashLocation。您是否有关于HashLocation设置方式的参考资料?对于Ember 2.2.0/Ember CLI 1.13.13,将locationType
设置为hash
无效。浏览器测试窗口显示为空白,出现控制台错误,无法找到模块“Ember”。对于Ember 2.2及以后的版本(目前在2.15/2.16中使用),是否有其他方法来执行此操作?