我想在我的功能rspec中添加上下文,但我不确定上下文和场景之间有什么意义。
这是我到目前为止所做的:
feature 'As an admin I manage the orders of the system' do
context 'Logged in user who is an admin' do
before(:each) do
admin = create(:admin_user)
login_as(admin, :scope => :user)
end
scenario 'User sees all the orders' do
visit admin_orders_path
expect(page).to have_content('List of orders')
end
end
context 'Logged in user who is not an admin' do
before(:each) do
user = create(:user)
login_as(user, :scope => :user)
end
scenario 'User cannot see the orders' do
visit admin_orders_path
expect(current_path).to eq('/')
end
end
end
这是否有意义,或者我应该在使用场景或上下文之间做出决定,但不是两者都在一起?
答案 0 :(得分:2)
我认为我的测试方式如下:
Feature
规范是用于测试整个“图片”的高级测试 - 应用程序的功能。
因此,我的应用的核心功能:features
内置scenarios
。
单元测试:describe
和it
。
虽然你可以使用context
。
来自documentation:
feature
和scenario
分别对应describe
和it
。这些方法只是允许使用特征规范的别名
阅读更多作为客户测试和验收测试。
因此,在您的情况下,我会执行以下操作:
feature 'As an admin I manage the orders of the system' do
context 'user is logged in as' do
before(:each) do
user = create(:user)
login_as(user, :scope => :user)
end
scenario 'an admin, can see all the orders' do
visit admin_orders_path
expect(page).to have_content('List of orders')
end
scenario 'not an admin, cannot see the orders' do
visit admin_orders_path
expect(current_path).to eq('/')
end
end
一个context
,两个scenarios
用户。另外,我会更多地考虑一下该功能的描述。希望有帮助,不要让你更加困惑!
另外,我喜欢看我的测试,就像我的应用程序的“心跳”。首先,您从功能测试(外部,核心功能)开始,然后进入内部(单元测试)。那件事情一直在重复,就像一个“心跳”
答案 1 :(得分:1)
根据docs:
功能和方案DSL对应
describe
和it
, 分别。这些方法只是允许使用特征规范的别名 阅读更多作为客户测试和验收测试。
编写功能规范时,您只需将describe
(或context
)替换为feature
即可。嵌套时feature
语句应该有效,例如describe
。