在Rails中,如何测试控制器调用特定模型方法

时间:2015-05-31 17:44:11

标签: ruby-on-rails

我有一个控制器,比如FoosController,包裹了一个模型FooFoo has_many Bar

我可以在我的控制器内部@foo.bars,但如果我知道Bar又有其他关系,我想要有效率并预取物品。为了简化它,我在我的模型Foo上定义了方法:

def bars_deep
  bars.includes([:other,:stuff])
end

我想测试一下,当我调用控制器的某些方法时,它会调用@foo.bars_deep而不只是@foo.bars

我该怎么做?我尝试使用MiniTest::Mock,但失败了:

f = @foo
mock = MiniTest::Mock.new
mock.expect :call, nil, []
f.stub :bars_deep, mock do
  get :cmethod, id: @foo
end
assert mock.verify

问题在于它是在 {/ 1>}的实例上进行模拟,但在控制器内部加载了另一个

如何测试我的控制器是否正在调用Foo,从而正确准备而不只是bars_deep

0 个答案:

没有答案