问题 在测试Ember.js应用程序时如何模拟后退按钮?


在我的验收测试中,我想模拟后退按钮点击和结果转换。

我有以下几点,但我觉得它错了。

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'));
    });
})

在测试中模拟后退按钮的正确方法是什么?


3788
2017-09-21 00:53


起源



答案:


window.history.back() 要么 window.history.go(-1)


8
2017-09-25 21:41



当与测试一起使用时,这不起作用,因为它强制整个窗口返回1,而不是路径。它基本上会把它带到一个不同的页面。 - Taras Mankovski
这是因为默认情况下测试使用的NoneLocation根本不跟踪历史记录。如果要测试后退功能,或者执行当前正在执行的操作,则必须将位置更改为HashLocation。 - alexspeller
你对HashLocation的设置有什么参考吗? - Taras Mankovski
也许这有助于...... emberjs.com/api/classes/Ember.HashLocation.html - gearsdigital
使用Ember 2.2.0 / Ember CLI 1.13.13,设置 locationType 至 hash 不起作用。浏览器测试窗口显示为空白,出现控制台错误,无法找到模块“Ember”。 - Bluu


答案:


window.history.back() 要么 window.history.go(-1)


8
2017-09-25 21:41



当与测试一起使用时,这不起作用,因为它强制整个窗口返回1,而不是路径。它基本上会把它带到一个不同的页面。 - Taras Mankovski
这是因为默认情况下测试使用的NoneLocation根本不跟踪历史记录。如果要测试后退功能,或者执行当前正在执行的操作,则必须将位置更改为HashLocation。 - alexspeller
你对HashLocation的设置有什么参考吗? - Taras Mankovski
也许这有助于...... emberjs.com/api/classes/Ember.HashLocation.html - gearsdigital
使用Ember 2.2.0 / Ember CLI 1.13.13,设置 locationType 至 hash 不起作用。浏览器测试窗口显示为空白,出现控制台错误,无法找到模块“Ember”。 - Bluu


要做 window.history.back() 你需要使用的工作 location : 'hash' 在你的 Router

App.Router.reopen({
  location: 'hash'
});

以下是有关设置位置类型的官方文档: http://emberjs.com/guides/routing/specifying-the-location-api/


3
2017-09-27 04:10





我编写了测试帮助程序来模拟后退和前进的浏览器导航按钮,并将它们发布为ember-cli插件: 烬-CLI-浏览器的导航按钮,测试辅助

他们揭露了3名测试助手: backButtonforwardButtonsetupBrowserNavigationButtons。最后一个注册服务,该服务记录位置更改并使用转换返回或转发。

它也适用于默认值 location: 'none'


1
2018-04-11 00:44