RSpec: Проблемы с преобразованием в новый синтаксис "allow" для mocks/stubs

Я пытаюсь выучить rspec и применить то, что я изучаю, к существующему приложению rails.

Я пытаюсь создать макет пользователя с именем "current_user"

Я в основном взял эту строку кода

     controller.stub(:current_user).and_return(build_stubbed(:user))

и поместил его перед моими тестами (все из которых требуют, чтобы current_user был определен)

Это работает. Но

  1. Я знаю, что этот синтаксис устарел, и я должен использовать

      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)
Другие вопросы по тегам