У меня проблема во время тестирования контроллера в rspec. Я создал сущность (хранится в postgres) и передал entity.id
как HTTP request
параметр. Я вижу, что объект был сохранен в БД в рамках теста, но контроллер не видел его.
Все запросы БД происходили в рамках одной транзакции, поэтому я подумал, что это будет проблемой.
У меня есть куча подобных тестов, поэтому нет проблем с подключением к БД и чем-то подобным.
Я попытался переместить create :entity
в перед блоком и загрузил его для запроса как Entity.all.first.id
.
Использование let!(:entity) {create :entity}
также было бесполезно. Вытащить это из контекста тоже.
// notifications_controller_spec.rb
context 'with an entity' do
it 'renders the list of notifications' do
entity = create :entity
pp Entity.all // returns array with stored entity
get :index, entity: entity.id
expect(response.status).to eq 200
expect(response).to render_template 'index'
end
end
//notifications_controller.rb
def index
pp Entity.all // returns empty array
defaults_entity
return render 'welcome_no_entity' if @entity.nil?
@notifications = NotificationDecorator.decorate_collection(
Notification::EntityScopedQuery.
new(@entity.id, { order: { created_at: :desc } }).
all
)
end
Я ожидаю увидеть сохраненную ту же сущность, что и в тесте.
Вероятно, будет какая-то глупая ошибка. Спасибо за помощь.
EDIT1:
// create entity
INSERT INTO "entities" ("name", "type", "customer_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["name", "test"], ["type", "complex"], ["customer_id", 514911], ["created_at", "2019-01-24 08:43:00.145471"], ["updated_at", "2019-01-24 08:43:00.145471"]]
// select in test
SELECT "entities".* FROM "entities"
Нет другого журнала, подобного SELECT "entities".* FROM "entities"
, даже когда он должен быть. Я также могу сказать, выберите из теста.