RSpec: Проблемы с преобразованием в новый синтаксис "allow" для mocks/stubs
Я пытаюсь выучить rspec и применить то, что я изучаю, к существующему приложению rails.
Я пытаюсь создать макет пользователя с именем "current_user"
Я в основном взял эту строку кода
controller.stub(:current_user).and_return(build_stubbed(:user))
и поместил его перед моими тестами (все из которых требуют, чтобы current_user был определен)
Это работает. Но
Я знаю, что этот синтаксис устарел, и я должен использовать
allow().to receive().and_return()
синтаксис, но я не могу преобразовать его в новый синтаксис и заставить его работать.
Я старался
user = double("user")
allow(user).to receive(:current_user).and_return(build_stubbed(:user))
безуспешно. На самом деле, я понятия не имею, что я делаю с этим, и мне нужно указать в правильном направлении. Я много раз искал ответ, но подозреваю, что он слишком простой.
Был бы признателен за некоторые рекомендации.
1 ответ
В настоящее время вы заглушаете current_user
метод для вашего controller
переменная. В вашем новом примере синтаксиса вы поставили заглушку на user
двойной объект.
Не зная больше о build_stubbed
Я бы ожидал, что это будет выглядеть так:
allow(controller).to receive(:current_user).and_return build_stubbed(:user)