用水豚测试破坏方法



我使用Capybara编写了一些测试,但我没有使用selenium,也没有使用任何其他JS驱动程序。但我的疑问是,我能否以这种方式测试destroy方法?因为我需要确认JS确认和data-method = "delete"不能访问…

我想做一些非常水豚的方式,像:

访问/人/123,:资料法=> '删除'

你们知道有什么办法可以做到吗?

提前感谢,安德烈

Rails有JavaScript代码从链接的hrefdata-method属性生成表单并提交它;如果没有JS,这将无法工作。

一种测试方法:首先,测试链接和适当属性(href, data-method)的存在,然后用Capybara::RackTest::Driver#delete方法手动触发删除请求。如果您经常这样做,那么编写一个helper方法来包装这两个步骤。

只是要注意@Mike Mazur的回答,如果你的控制器对#destroy动作进行重定向,调用Capybara的驱动程序上的delete方法实际上并不遵循重定向。相反,它只是用重定向消息填充response,即body == <html><body>You are being <a href="http://www.example.com/model_names">redirected</a>.</body></html>status_code == 302

因此,要像您期望的正常Capybara click_button 'Delete Model'那样填充所有内容,您需要手动执行重定向。有一种方法(未重构且符合RSpec):

Capybara.current_session.driver.delete controller_path(model_instance)
Capybara.current_session.driver.response.should be_redirect
visit Capybara.current_session.driver.response.location

相关内容

  • 没有找到相关文章

最新更新