为什么 rails 测试在我点击按钮后会恢复到初始路径?



我有以下系统测试(Rails后端,React/Redux前端单页应用程序(:

test "can sign up user properly" do
visit '/'
within ('.signup-form-box') do
fill_in 'Username', with:'userp'
fill_in "Email Address", with: "t!"
fill_in "Password", with: "12345679"
click_on "Sign Up"
end
assert page.current_path ==  '/books'
end

它应该在成功注册后将用户引导到"/books"页面。但是,此测试失败。当我将断言更改为:

assert page.current_path ==  '/'

它过去了。检查这种事情的正确方法是什么?

click_on

不能保证等待它触发的任何操作,因为Capybara无法知道将触发什么操作(如果有的话(。 特别是出于这个原因,Capybara 在其查找器、匹配器和断言中内置了等待行为,以允许页面赶上测试。在本例中,您使用的是针对水豚返回的东西的通用断言,而不是水豚提供的匹配器。而不是你应该使用的assert page.current_path == '/books'

assert_current_path '/books'

它会继续检查路径一段时间,看看它是否/何时更改。 如果这不能解决您的问题,那么这意味着您的登录/注册失败,通过查看页面(html或屏幕截图(应该很明显地确认这一点。

注意:我认为您的测试应该失败,因为t!作为电子邮件地址应该无法通过验证。

最新更新