如何测试使用Rspec成功提交的表单?

时间:2015-11-11 18:01:25

标签: ruby-on-rails rspec capybara

我正在为我的文章表单编写功能规范。

在一次测试中,我让RSpec使用标签寻找某些表格输入:

expect(find_field("Title")).to_not be_nil

现在我想知道表单是否已正确提交。如何使用RSpec执行此操作,如果您不应该从功能规范中检查数据库

例如,如果我在name输入上输错了Title属性怎么办?我的find_field()调用仍会找到该标签,而控制器规范会让我在散列中指定title

2 个答案:

答案 0 :(得分:0)

在这种情况下,人们会认为文章需要一个标题,因此如果名称属性拼写错误,文章的创建将失败并且您最终会出现在错误页面上(此外,未经许可的参数会在在具有强参数的测试模式下默认创建)。如果它不是创建文章所需的字段,那么假设信息显示在应用程序的某个地方,并且可以在该页面上进行检查。

另外,如果重写为

,您的样本预期会更清晰
expect(page).to have_field('Title')

答案 1 :(得分:0)

有很多方法可以解决这个问题:

expect(page).to have_field('Title')

expect(page).to have_css('#someSelector')

expect(current_path).to eq article_path (for example)

expect(page).to have_content "ABC" (i.e. some content which will be rendered)

关于Github的Capybara自述文件是一个非常好的,有很多易于理解的例子 - https://github.com/jnicklas/capybara