Я пытаюсь утверждать, что метод экземпляра вызывается для определенного действия контроллера один раз.Тест не работает по какой-то причине.Код действительно делает то, что должен.
Я использую Rspec 1.x и factory_girl
Test
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 => @feed_entry.id, :format => '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 => @feed_entry.id, :format => 'json'
end
it { should respond_with(204)}
it { should assign_to(:feed_entry).with(@feed_entry) }
it { should respond_with_content_type(/json/) }
end
Контроллер
# 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 => :true, :status => :no_content }
format.plist { render :nothing => :true, :status => :no_content }
end
end
Ошибка
1)
Spec::Mocks::MockExpectationError in 'FeedEntriesController.read as a regular API user should call read_by method once'
#<FeedEntry:0x107db8758> 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