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中使用),是否有其他方法来执行此操作?