Тестирование подачи тёмной формы с коначей
Мы пытаемся проверить поведение формы в нашей системе, используя konacha и sinon. На маршрутах отправка формы обрабатывается по следующей схеме:
save: (object) ->
object.one "didCreate", @, ->
@transitionTo "nextStep"
object.one "becameInvalid", @, ->
object.send("becameValid")
object.one "becameError", @, ->
@transitionTo "currentStep"
object.get("transaction").commit()
Это прекрасно работает, когда реальный пользователь взаимодействует с браузером. Если наш сервер возвращает ошибку проверки, пользователь остается на той же странице, и ошибки проверки отображаются правильно. Когда мы пытаемся проверить эту функциональность, форма POST никогда не возникает, и ни один из блоков object.one не вызывается.
Мы тестируем со следующим:
describe "When I enter invalid information", ->
beforeEach (done) ->
Em.run ->
$('.button-success').click()
done()
it "should redirect to the current step", ->
Em.run ->
@router.get("url").should.equal "/currentStep"
describe ".help-block", ->
it "should display a validation error", ->
Em.run ->
$('.help-block').text().should.equal "is not a valid, can't be blank"
Когда я бегу konacha: служить, я могу видеть форму правильно. Нажатие на кнопку "Отправить" вручную в iFrame ведет себя иначе, чем нажатие на кнопку "Отправить" в отдельном окне браузера (в отдельном окне браузера я вижу, что происходит POST). Я догадываюсь, что это связано с POST, происходящим в следующем цикле выполнения. Если это правда, есть ли способ для теста Конача охватить несколько итераций цикла выполнения? Как мне перейти к следующей итерации цикла вручную?