0
我正在从头开始编写Rails集成套件。该项目使用自定义Websocket客户端(和本机ES6承诺对象)进行一些异步行为。等待原生ES6承诺在Rails集成测试中解决?
有没有办法告诉Rails应用程序还有未解决的承诺,并且在继续进行下一步测试之前需要等待而无需修改Javascript源代码?这里的大部分内容都集中在等待AJAX请求完成。这对于应用程序的某些部分很有用,但Websocket命令独立于AJAX。
我正在从头开始编写Rails集成套件。该项目使用自定义Websocket客户端(和本机ES6承诺对象)进行一些异步行为。等待原生ES6承诺在Rails集成测试中解决?
有没有办法告诉Rails应用程序还有未解决的承诺,并且在继续进行下一步测试之前需要等待而无需修改Javascript源代码?这里的大部分内容都集中在等待AJAX请求完成。这对于应用程序的某些部分很有用,但Websocket命令独立于AJAX。
您需要设置一个断言/期望值,以确定解析时所产生的任何可见变化(就像您应该为AJAX请求所做的那样)。因此,如果将文本添加到页面
assert_text('New text that is added') # non-RSpec
expect(page).to have_text('New text that is added') # if using RSpec
,或者如果它增加了一个新的元素添加到页面
assert_selector(:css, '#id_of_new_element') # non-RSpec
expect(page).to have_css('#id_of_new_element') # RSpec
等水豚提供断言/预期将等待/重试高达Capybara.default_max_wait_time为他们的条件将得到满足,所以如果你告诉它期望在页面中创建的承诺发生任何变化,它就会等待承诺解决。