Ahm*_*mad 4 bdd rspec ruby-on-rails capybara rspec-rails
我在这里有一个关于水豚内干燥的问题。汤姆回答完美,在回答中提到:
功能测试应用于测试系统中的较大行为。
Ruby on Rails中的功能规范和视图规范之间有区别吗?如果可能,请以一些示例进行说明。谢谢。
是的,功能和视图规格完全不同。第一个是完全集成测试,第二个是单独测试视图。
一个功能规范使用模拟浏览器来从就像一个用户使用它的外面测试整个系统。如果您使用正确的无头浏览器并打开Javascript,它还将练习代码,数据库,视图和Javascript。
与其他类型的rspec-rails规范不同,功能规范是使用feature和scenario方法定义的。
功能规格,只有功能规格,使用的水豚的所有功能,包括visit,类似的方法fill_in和click_button,以及匹配器一样have_text。
rspec-rails文档中有很多有关功能规格的示例。这是一个快速的:
feature "Questions" do
scenario "User posts a question" do
visit "/questions/ask"
fill_in "title" with "Is there any difference between a feature spec and a view spec?"
fill_in "question" with "I had a question ..."
click_button "Post Your Question"
expect(page).to have_text "Is there any difference between a feature spec and a view spec?"
expect(page).to have_text "I had a question"
end
end
Run Code Online (Sandbox Code Playgroud)
甲视图规范只是呈现在隔离视图,其中由测试,而不是由控制器提供的模板变量。
像其他类型的rspec-rails规范一样,视图规范是通过describe和it方法定义的。用分配模板变量,用assign渲染视图,render并用获取结果rendered。
视图规格中唯一使用的Capybara功能是匹配器,例如have_text。
View spec的rspec-rails文档中有很多示例。这是一个快速的:
describe "questions/show" do
it "displays the question" do
assign :title, "Is there any difference between a feature spec and a view spec?"
assign :question, "I had a question"
render
expect(rendered).to match /Is there any difference between a feature spec and a view spec\?/
expect(rendered).to match /I had a question/
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1523 次 |
| 最近记录: |