Я знаю, что expect(assign(:var))
в тестах контроллеров указывает, что @var
получает определенное значение. В моем случае я хочу проверить, получает ли это @var
определенное сообщение. Если я сделаю это до get :action
, то присваивание возвращает nil. Если я это сделаю, слишком поздно ожидать сообщения.RSpec, проверяющий переменную экземпляра контроллера, получает сообщение
# controller
def action
@var = something
@var.message
render :nothing
end
# spec1
expect(assigns(:var)).to receive(:message) # not working, var is nil
get :action
# spec2
get :action
expect(assigns(:var)).to receive(:message) # not working, expectation too late
Пробовал использовать rspec-mocks, но это не сработало, или я не мог понять, как это должно быть написано: 'var = spy (assigns (: var), action: 1); get: action, id: 10; ожидать (var) .to have_received (: action) ' – hammady
К сожалению,' assigns (: var) 'будет возвращать' nil', если вызывается перед 'get: action', и это весь вопрос в моем вопросе. Для этого я попробовал 'spy' вместо' double', который тоже не работал. – hammady
Возможно, попробуйте '@ var' вместо' assigns (: var) '? –