Rails,Rspec:"期待"内部方法"之前"块

时间:2014-03-25 19:38:59

标签: ruby-on-rails ruby rspec

我在Rails应用程序上进行合作,其中测试套件充满了这种声明:

before do
  expect(job_post).to receive(:destroy).and_return(true)
  delete :destroy, params_id
end

(测试套件是绿色的)

现在,在expect块中使用before对我来说没有意义。我找不到关于这个主题的任何文件。

甚至更奇怪的是,它似乎充当了一种存根。如果我将其删除,则测试失败。

UPDATE:

有人已经回复了重构测试。 虽然赞赏(谢谢),但这并没有回答我的问题。事实上,我知道如何编写控制器规范,最终我会完全重写这个测试文件。

我的问题是:

  1. 我报告的代码是否有意义?
  2. 是否记录了expect的使用情况?在哪里?
  3. 如果确实有意义,有人可以提供一些指示吗?

1 个答案:

答案 0 :(得分:2)

是的,它没有意义。如果他们想要模拟job_post接收的东西,他们应该使用存根来完成它,而不是实际对对象进行操作。然后他们出于什么原因delete呢?

它不是免费的,但是作为指针,我会去Destroy All Software。关于那里的测试,有很多很酷的事情。我最近也看了The Magic Tricks of Testing,它对整个测试事项的帮助很大。