Can't get this Rspec test to pass

Hello, I found a solution that makes this test pass and it was simply to
mock out the controller's find method as such:

Herd.stub(:find).with(@persist_herd.id) { mock_herd }

I am probably not fully understanding RSpec but this feels strange to
me. In my understanding of writing tests, you want to first prepare
the test environment by creating the proper database/objects relevant to
the testing environment, pass the relevant parameters and test the
results of method you are testing. Mocking out this controller code
@herd = Herd.find(params[:herd_id]) with this
Herd.stub(:find).with(@persist_herd.id) { mock_herd } doesn't seem to
let the controller test it's own code? Why can't the parameters I'm
passing to the controller be enough to test Herd.find(params[:herd_id])
?

Please help me understand this?