In Rails, how do I test that a particular model method is called by a controller -
i have controller, fooscontroller
, wrapping model foo
. foo
has_many bar
.
i can @foo.bars
inside contrller, if know bar
in turn has other relationships, want efficient , pre-fetch items. simplify it, have defined on model foo
method:
def bars_deep bars.includes([:other,:stuff]) end
i want test when call methods of controller, calls @foo.bars_deep
, not @foo.bars
.
how do that? tried using minitest::mock
, failed:
f = @foo mock = minitest::mock.new mock.expect :call, nil, [] f.stub :bars_deep, mock :cmethod, id: @foo end assert mock.verify
the problem is mocking on this instance of foo
, different 1 loaded inside controller.
how can test controller calling bars_deep
, preparing , not bars
?
Comments
Post a Comment