在对 capybara 和 rspec 进行最新更改之前,允许请求规范使用page
andvisit
方法。集成测试运行良好,允许您跨模型、视图和控制器进行测试。所以测试像关注和取消关注用户这样的事情很简单
describe "User" do
context "Relationships" do
let(:user) { FactoryGirl.create :user }
let(:other_user) { FactoryGirl.create :user }
before do
sign_in user
end
describe "Following a user" do
before do
visit user_path(other_user)
end
it "will increment the followed user count" do
expect do
click_button "Follow"
end.to change(user.followeds, :count).by(1)
end
end
end
end
现在这是根据 capybara 和 rspec 推荐的将请求规范重写为功能规范
feature "Relationships" do
given!(:user) { FactoryGirl.create :user }
given!(:other_user) { FactoryGirl.create :user }
background do
sign_in user
end
scenario "following another user" do
visit user_path(other_user)
click_button "Follow"
expect(page).to have_button "Unfollow"
end
end
page
与使用andvisit
方法的请求规范相比,在功能规范中获得相同的细节似乎更困难或不可能。
任何人都可以展示如何重写请求规范以仅使用response
对象和不使用page
and来测试相同的东西visit
吗?
而且我也知道将它们重新包含在请求规范中,但不推荐。
提前致谢