即使在控制器中正在调用方法,模型也无法接收来自方法的调用

时间:2019-04-29 05:52:48

标签: ruby-on-rails ruby rspec tdd

我正在尝试编写测试以查看我的医院模型是否正在接收自定义方法look_for_hospitals。

这是测试:

free

这是我的模特:

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

这是HospitalsController中的方法搜索:

class Hospital<ApplicationRecord
    def self.look_for_hospitals term
    end
end

运行测试时,这是我遇到的错误:

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

我知道还没有实现任何东西,但是我正在尝试先编写测试再编写方法的tdd方法。 抱歉,如果我的英语有点奇怪,而不是说英语的人。

谢谢!

1 个答案:

答案 0 :(得分:2)

正如汤姆·洛德(Tom Lord)所指出的那样,问题出在主计长开始时的before_action行中。我只需要存根即可,问题就解决了。