如何在rspec中的lambda之后测试多个东西?

Hou*_*uen 5 controller rspec ruby-on-rails

所以我在Rails中使用rspec有这样的东西:

it "should create a new user" do
  lambda do
    post :create, @attr
  end.should change(User,:count)
end
Run Code Online (Sandbox Code Playgroud)

但帖子:create,@ attr创建了一个User和一个公司,那么如何"链接" 变更调用以便我可以测试它们?我正在寻找的是什么end.should change(User,:count) && change(Company,:count)

idl*_*ers 8

我认为你试图在一次测试中断言很多,但它与测试的名称不符.请考虑一下:

it "should create a new user" do
  lambda do
    post :create, @attr
  end.should change(User,:count)
end

it "should create a new company" do
  lambda do
    post :create, @attr
  end.should change(Company,:count)
end
Run Code Online (Sandbox Code Playgroud)

此外,您可能没有意识到有一种更好的方法来编写那些执行相同操作的断言,但读取得更好:

expect {
  post :create, @attr
}.to change(Company, :count)
Run Code Online (Sandbox Code Playgroud)