Возможно ли (и разумно) написать тесты и классы Controller перед написанием базовых классов Model?Я думал, что видел заметки о том, как это сделать, но теперь я не могу найти рецепт.
Например, рассмотрим следующий контроллер:
# file: app/controllers/premises_controller.rb
class PremisesController < ApplicationController
def create
@premise = Premise.new(params[:premise])
respond_with @premise
end
end
Могу ли я проверить этот код контроллераперед созданием базовой модели помещения и помещения?Я знаю, что следующее не сработает - как бы вы переписали это (если это возможно)?
# file: spec/controller/premise_spec.rb
require "spec_helper.rb"
describe PremisesController do
context 'POST create' do
it 'should assign a new Premise to @premise' do
premise = stub_model(Premise)
Premise.stub(:create) { premise }
post :create
assigns(:premise).should == premise
end
end
end
end
update
Чем больше я об этом думаю, тем больше я 'Я убежден, что мне нужно нужно определить класс Premise
- код PremisesController
должен ссылаться на него.Поэтому я изменю свой вопрос на «необходимо ли создать базовую таблицу базы данных premises
для выполнения PremisesController
тестов?»
На данный момент я не вижу хорошего способавокруг него (без изменения кода PremisesController
, который побеждает точку тестирования).Например, вызов respond_with
вызывает @premise.has_errors?
, который, в свою очередь, обращается к базе данных, чтобы получить имена столбцов.Если я не захочу заглушить методы, внутренние по отношению к ActiveRecord
, я не вижу, как избежать попадания в БД.
Но я бы с радостью показал, что иначе.