Настройка для тестирования вложенных контекстов - PullRequest
0 голосов
/ 05 июля 2019

Новичок RSpec здесь - я пытаюсь создать спецификацию запроса для контроллера, который имеет несколько начальных состояний.Чтобы проверить возможные перестановки, у меня есть вложенные контексты, но они не работают так, как я думал.Я попытался покопаться в API rspec, чтобы посмотреть, могут ли помочь такие вещи, как append_before / prepend_before, но, похоже, они работают только в пределах контекста, а не на уровнях вложенности.

Я написал следующее:

  context 'old A' do
    before { create :a }

    context 'old B' do
      before { create :b }

      context 'old C' do
        before {create :c}
        before {post '/endpoint'}

        it('foos') {assert true}
        it('bars') {assert true}
      end
      context 'no C' do
        before {post '/endpoint'}

        it('foos') {assert true}
        it('bars') {assert true}
      end
    end
    context 'no B' do
        before {post '/endpoint'}

        it('foos') {assert true}
        it('bars') {assert true}
    end
  end
  context 'no A' do
    before { post '/endpoint' }

    it('foos') { assert true }
    it('bars') { assert true }
  end

Я бы хотел написать что-то вроде этого:

  final_before {post '/endpoint'}
  it_deep('foos') {assert true}
  it_deep('bars') {assert true}
  # implicit foo/bar assertion
  # implicit post
  context 'old A' do
    before { create :a }
    # implicit foo/bar assertion
    # implicit post after creating a

    context 'old B' do
      before { create :b }
      # implicit foo/bar assertion
      # implicit post after creating a and b

      context 'old C' do
        before {create :c}
        # implicit foo/bar assertion
        # implicit post after creating a and b and c
      end
    end
  end 

То, что у меня уже неткажется очень сухим, вероятно, не подходит с правильным стилем для rspecs.У кого-нибудь есть какие-либо рекомендации о том, как мне привести в порядок вещи?

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