Почему «Не используйте« ожидаем »в таких хуках, как« до »? - PullRequest
0 голосов
/ 21 февраля 2019

Мой вопрос в значительной степени объясняется названием.Я пытался гуглить, но не нашел ничего удовлетворительного.rubocop-rspec не позволяет expect внутри before, почему это так?Есть ли веская причина избегать такого использования?Спасибо за ваши объяснения заранее!

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Четырехфазный тест - это тестовый шаблон, обычно используемый для юнит-тестов.Это общая форма:

test do
  setup
  exercise
  verify
  teardown
end

before является частью фазы setup, когда разработчик создает сценарий и поддерживает данные.

expect является частью фазы verify, которая происходит внутри блока it.

Обычный шаблон - использовать allow в before блоках и использовать *Например, блоки 1017 * in it. Блоки

RSpec.describe User do
  describe '#forgot_password' do
    before { allow(EmailService).to receive(:send) }

    subject { FactoryBot.create(:user).forgot_password }

    it 'sends an email to user to start the password resetting process' do
      subject
      expect(EmailService).to have_received(:send).with(...)
    end
  end
end

before также можно добавлять в другие уровни приложения (spec_helper.rb, общие примеры), и никто не хочет полагаться направильный порядок блоков перед тем, чтобы тест был успешным.

0 голосов
/ 28 февраля 2019

Только тесты должны включать ожидания (также известные как утверждения).Блоки before предназначены для настройки среды, в которой выполняются ваши тесты.Они не предназначены для самих испытаний.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...