我们正在尝试使用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:serve时,我可以正确地看到表单。在iFrame中手动单击提交按钮的行为与在独立浏览器窗口中单击提交按钮的行为不同(在独立浏览器窗口中,我可以看到POST发生)。我的预感是,这与在下一个运行循环中发生的POST有关。如果这是真的,那么konacha测试是否有办法跨越多个运行循环迭代?我将如何手动前进到下一个循环迭代?