我正在使用带有Capybara的Rspec Rails进行测试,我想在RSpec Rails 3中使用新的feature spec作为read more as customer tests and acceptance tests
。但是,我发现旧版(Describe / It)风格缺少的一件事是嵌套。尝试在scenarios
块中嵌套background
或使用scenario
时,出现undefined method
错误。无论如何,我可以通过功能规范来实现嵌套来获得这样的东西(来自Michael Hartl的Ruby On Rails Tutorial:
describe "Authentication" do
subject { page }
describe "authorization" do
let(:user) { FactoryGirl.create(:user) }
describe "for non-signed in users" do
describe "when attempting to visit a protected page" do
before { visit edit_user_path(user) }
it "should redirect_to to the signin page" do
expect(page).to have_title('Sign in')
end
describe "after signing in" do
before do
valid_signin user, no_visit: true
end
it "should render the desired protected page" do
expect(page).to have_title('Edit user')
end
或者我应该以不同的方式思考集成测试?
答案 0 :(得分:11)
如https://www.relishapp.com/rspec/rspec-rails/docs/feature-specs/feature-spec中所述,feature
对应describe
,scenario
对应it
。因此,您可以嵌套feature
的实例,但无法在scenario
中嵌套scenario
,就像您无法在it
中嵌套it
一样。
答案 1 :(得分:6)
feature
scenarios
Capybara version 2.2.1
在Gemfile中包括
gem "capybara", "~> 2.2.1"
和bundle install
根据Capybara的官方文件
功能实际上只是 describe ...的别名,:type => :特征, 背景是之前的 的方案和给定 / *的别名给予!的* 分别为让 / * let! *的别名。
以下是original issue,后来在版本2.2.1中为accepted and merged