水豚has_content?堵塞

Capybara has_content? block

有时我真的需要在数据库中检查一些东西,

但是,如果我立即使用 u = User.last 访问数据库,则 AJAX 请求有可能无法完成,并且在 User.last 中 - 我会找到旧记录。

因此,为此我需要一些解决方法,例如,

断言has_content? 'Success' 做 # 这里我们访问数据库 结束

我们检查成功消息,哪个服务器响应,这是我们可以转到我们的数据库的标志。 我怎样才能做到这一点? 提前谢谢大家。

你不需要一个块来完成这个,只需要一个然后另一个。内容断言将等待内容存在,这将确认 AJAX 已完成,然后您可以检查用户

assert_content 'Success' # will wait for 'Success' to appear
u = User.last # won't happen until after 'Success has appeared and therefor the AJAX has completed'

另请注意使用提供的水豚 assert_content(而不是 assert has_content? ...)。您通常更喜欢使用 Capybara 提供的断言,而不是对 Capybara 布尔方法的结果进行断言,因为失败时的错误消息会更加清晰。