我想使用spec.rb文件中所有“features”都可以访问的“given”(或“let”)设置一个变量。我该怎么做?“给定”语句应位于文件中的何处?谢谢!
require 'spec_helper'
feature "Home page" do
given(:base_title) { "What Key Am I In?" }
scenario "should have the content 'What Key Am I In?'" do
visit '/static_pages/home'
expect(page).to have_content('What Key Am I In?')
end
scenario "should have the title 'What Key Am I In? | Home'" do
visit '/static_pages/home'
expect(page).to have_title("#{base_title}")
end
scenario "should not have a custom page title | Home'" do
visit '/static_pages/home'
expect(page).not_to have_title("| Home")
end
end
feature "About page" do
scenario "should have the content 'About'" do
visit '/static_pages/about'
expect(page).to have_content('About')
end
scenario "should have the title 'What Key Am I In? | About'" do
visit '/static_pages/about'
expect(page).to have_title('What Key Am I In? | About')
end
end
最佳答案
given/let
调用用于feature/describe/context
块的顶部,并应用于所有包含的feature/describe/context
或scenario/it
块。在您的例子中,如果您有两个独立的feature
块,那么您需要将它们封装在一个更高级别的feature/describe/context
块中,并放置您希望应用于所有更高级别的given/let
调用。
引用rspec中使用的capybara文档:feature
实际上只是describe ..., :type => :feature
的别名,background
是before
的别名,scenario
是it
的别名,
分别为given/given!
和let/let!
别名。
此外,在rspec中,describe
块(无论是通过describe
、context
或水豚别名feature
表示)可以任意深度嵌套。相比之下,在黄瓜中,feature
只能存在于规格的顶层。
你可以谷歌“rspec嵌套描述”获得更多信息。
关于ruby-on-rails - 在 capybara 中使用带有功能/场景的给定/允许,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17864449/