Модель не получает вызов от метода, даже если метод вызывается в контроллере - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь написать тест, чтобы увидеть, получает ли моя модель больницы специальный метод look_for_hospitals.

Вот тест:

Rspec.describe HospitalsController, type: :controller do
    describe '#search' do
        it 'should call the model method to do the search' do
            # model should implement method look_for_hospitals
            expect(Hospital).to receive(:look_for_hospitals).with('keyword')
            # form in search page must be named 'keywords'
            get :search, params: {:keywords => 'keyword'}
            expect(assigns(:hospitals))
        end
    end

Вот моя модель:

class Hospital<ApplicationRecord
    def self.look_for_hospitals term
    end
end

И вот поиск метода в HospitalsController:

def search
    keyword = params[:keywords]
    @hospitals = Hospital.look_for_hospitals(keyword)
end

Когда я запускаю свой тест, у меня появляется ошибка:

  1) HospitalsController#search should call the model method to do the search
     Failure/Error: expect(Hospital).to receive(:look_for_hospitals).with('keyword')

       (Hospital(id: integer, cnes: string, number: integer, address: text, latitude: string, longitude: string, name: string, phones: text, nature: string, specialties: text, rpa: string, microregion: string, created_at: datetime, updated_at: datetime) (class)).look_for_hospitals("keyword")
           expected: 1 time with arguments: ("keyword")
           received: 0 times

Я знаю, что в значительной степени ничего еще не реализовано, но я пробую странный подход сначала написать тесты, а затем методы.Извините, если мой английский немного странный, а не носитель английского языка.

Спасибо!

1 Ответ

2 голосов
/ 29 апреля 2019

Как указал Том Лорд, проблема была в строке before_action в начале Контроллера.Мне просто нужно было заглушить их, и проблема исчезла.

...