有没有办法强制RSpec重新评估let语句?

B S*_*ven 5 ruby tdd bdd rspec

这个例子有点人为,但很好地解释了用例.

let( :number_of_users ){ User.count }

it 'counts users' do
  User.create
  number_of_users.should == 1
  User.create
  number_of_users.should == 2
end
Run Code Online (Sandbox Code Playgroud)

此测试失败,因为number_of_users仅评估一次,并且变得陈旧.有没有办法在每次调用时对其进行重新评估?

Stu*_*t M 11

您可以定义常规方法:

def number_of_users
  User.count
end

it 'counts users' do
  User.create
  number_of_users.should == 1
  User.create
  number_of_users.should == 2
end
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅此博客文章,包括如何将帮助程序方法存储在单独的模块中.