2015-11-11 6 views
1

Мне нужна помощь в тестировании, использующее document.location. Я запускаю реакцию/сокращение + синус/мокко. Вот мои действия:Функция тестирования с document.location

export function importFile(file) { 
    return (dispatch) => { 
     dispatch(importFile()); 

     return jQuery.post('/api/import/', {file}).done((data) => { 
      window.location = `/edit/${data.id}`; 
     }).fail((err) => { 
      return dispatch(importFileError(err)); 
     }); 
    }; 
} 

Если и запустить мой тест в командной строке - я не могу проверить, существует ли перенаправление на страницу после done, но если я запускаю мой тест в браузере я был перенаправить и все другие тесты были отброшены. Вот мой тест:

it('should create an action to upload import file', (done) => { 
      const id = '123'; 
      const file = 'testname'; 
      const server = sinon.fakeServer.create(); 
      const expectedActions = [ 
       {type: actions.IMPORT_FILE} 
      ]; 
      const store = mockStore({}, expectedActions, done); 
      store.dispatch(actions.importFileUpload(file)); 
      server.respondWith([201, { 'Content-Type':'application/json' }, `{"id":"${id}","version":12}`]); 
      window.XMLHttpRequest = sinon.useFakeXMLHttpRequest(); 
      server.respond(); 
     }); 

Что такое лучший способ проверить функции, как это? Предотвратить перенаправление или использовать оболочку для функции перенаправления? Спасибо.

ответ

0

У меня довольно сложная часть кода, которую я тестирую с помощью Mocha, чтобы изолировать ее от Mocha. Я запускаю ее в iframe. Это не позволяет моему приложению испортить тесты Mocha. Он должен также работать, чтобы предотвратить присвоение window.location от остановки тестов, поскольку window.location является локальным для фрейма. (Объект Window в кадре - это другой объект из того, который находится на странице, содержащей фрейм.)

Смежные вопросы