为什么存根仅在第一次测试中使用?

时间:2019-01-29 06:07:25

标签: ruby-on-rails ruby rspec

我有一个对S3客户端进行存根的rspec测试。我可以在此客户端上成功存根方法(例如方法A),在第二个测试中,我想存根其他方法(例如方法B)。但是,第二个测试从不使用存根。如果我切换测试顺序,则第二个方法无论其功能如何都不会使用存根方法(例如我在A之前测试B,B将通过而A将失败)。有什么作用?

event

2 个答案:

答案 0 :(得分:0)

@s3_double = Aws::S3::Client.new(stub_responses: true)
Aws::S3::Client.stub(:new).with(anything).and_return(@s3_double)

这些线条不是颠倒了吗?无论如何,@ s3_double似乎并不总是您所期望的。我会调试成功和失败案例的地狱,然后看看它是什么样。

答案 1 :(得分:0)

这是因为接受测试的课程是单身人士。我按照此处(Resetting a singleton instance in Ruby)的指导进行单元测试。