Assert that an instance method is called once in the controller <p>I am trying to assert that an instance method is called on a certain controller action once. The test does not work for some reason. The code does indeed do what it is supposed to.</p> <p>I am using Rspec 1.x and factory_girl </p> <p>Test</p> <pre><code>context 'as a regular API user' do before do login_as_regular_user Feed.superfeedr_api.stub!(:pingable?).and_return(true) @feed_entry = Factory(:feed_entry) post :read, :id =&gt; @feed_entry.id, :format =&gt; 'json' end it "should call read_by method once" do @user = Factory.create(:user) controller.stub!(:current_account).and_return(@user.account) @feed_entry.should_receive(:read_by).once post :read, :id =&gt; @feed_entry.id, :format =&gt; 'json' end it { should respond_with(204)} it { should assign_to(:feed_entry).with(@feed_entry) } it { should respond_with_content_type(/json/) } end </code></pre> <p>Controller</p> <pre><code># POST /entries/1234/read - mark as read # DELETE /entries/1234/read - mark as unread def read if request.post? @feed_entry.read_by(current_account) elsif request.delete? @feed_entry.unread_by(current_account) end respond_to do |format| format.html { redirect_to topic_path(params[:topic_id]) } format.json { render :nothing =&gt; :true, :status =&gt; :no_content } format.plist { render :nothing =&gt; :true, :status =&gt; :no_content } end end </code></pre> <p>Error</p> <pre><code>1) Spec::Mocks::MockExpectationError in 'FeedEntriesController.read as a regular API user should call read_by method once' #&lt;FeedEntry:0x107db8758&gt; expected :read_by with (any args) once, but received it 0 times ./spec/controllers/feed_entries_controller_spec.rb:82: Finished in 2.242711 seconds 25 examples, 1 failure, 3 pending </code></pre>