Rspec最佳实践:为什么“它”只期望一件事?

时间:2012-07-25 07:20:49

标签: ruby-on-rails rspec bdd

我在这张幻灯片上阅读了有关RSpec最佳实践(http://blog.bandzarewicz.com/slides/krug-the-perfect-rspec/#19)和许多其他地方的信息,最佳做法是只使用一个“it”进行一次预期。例如:

describe UsersController, '#create' do
  # setup spec...
  it 'creates a new user' do
    should assign_to(:user).with(user)
    should set_the_flash
    should respond_with(:redirect)
    should redirect_to(admin_user_path(user))
  end
end

VS

describe UsersController, '#create' do
  # setup spec...
  it { should assign_to(:user).with(user) }
  it { should set_the_flash }
  it { should respond_with(:redirect) }
  it { should redirect_to(admin_user_path(user)) }
end

为什么最佳做法只有一个期望与一个“它”?

1 个答案:

答案 0 :(得分:3)

因为这种方法更适合文档化。试试rspec --format documentation。另一个原因是,每个should只有一个it,您可以随时查看哪个测试失败。