Как выполнить навигацию по странице модульного тестирования?

Пример использования: я хочу выполнить модульное тестирование (в браузере, QUnit или что-то в этом роде) кода, запущенного на странице. Одна из вещей, которые страница может сделать, - это перейти на другую страницу. У меня проблемы с распознаванием этого событие, потому что:

  • beforeunload не может остановить действие (так что первая навигация прерывает мой тест)
  • попытка переопределения window.location или window.location.href с получателем, возвращающим старое значение, и установщик шпионажа также запрещены

Я не Поймите, есть причины безопасности, которые не позволяют прекратить переход, но для разработки действительно полезно иметь возможность сделать это.

Есть ли возможность сделать это (у меня нет прямого контроля над исполнителем тестов, поэтому я не могу просто загрузить код в iframe и позволить ему перемещаться, а затем проверять местоположение iframe)?

РЕДАКТИРОВАТЬ: Чтобы быть немного более конкретным: я хочу проверить, установлен ли на кнопке входа в систему правый обработчик на основе зарегистрированного / подключенного статуса из facebook (я использую facebook-stub из github для имитации fb) (скажем, $ ('# login-btn') ), который при нажатии перемещает страницу в диалоговое окно facebook oauth, server-flow (подробности здесь не важны).

Итак, я хотел бы иметь возможность делать такие вещи:

// set up fb mock to not be connected
fbAsyncInit(); // simulate the startup of app
$('#login-btn').click();
equal(document.location.href, "http://www.facebook.com/oauth/...", "OAuth dialog not started.");

, но, конечно, без реальной навигации. Как пройти тест?

5
задан j0k 20 March 2013 в 13:13
поделиться