Как имитировать обратную кнопку при тестировании приложений 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'));
    });
})

Каков правильный способ имитации обратной кнопки в тестах?

Ответ 1

window.history.back() или window.history.go(-1)

Ответ 2

Чтобы выполнить window.history.back(), вам нужно использовать location : 'hash' в Router

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

Здесь официальная документация об установке типа местоположения: http://emberjs.com/guides/routing/specifying-the-location-api/

Ответ 3

Я написал тестовых помощников для имитации кнопок навигации и навигации браузера и опубликовал их в качестве дополнения ember-cli: ember-cli-browser-navigation-button -test-помощник

Они выставляют 3 тестовых помощника: backButton, forwardButton, setupBrowserNavigationButtons. Последняя собственная регистрация службы, которая регистрирует изменения местоположения и использует переходы для возврата или пересылки.

Он также работает со значением по умолчанию location: 'none'.