изменил rspec на 1, но изменил на 2 - PullRequest
0 голосов
/ 08 января 2019

У меня есть следующий код для проверки действия создания контроллера

    let(:custom_action)     { create :custom_action, entity: entity }

Describe '#create' do  
        context 'with valid attributes' do
          before { allow(controller).to receive(:custom_actions_path).and_return('/') }

          subject { post :create, params: { custom_action: {
            name: custom_action.name,
            label: custom_action.label,
            url: custom_action.url,
            request_method: custom_action.request_method,
            entity_id: entity.id
          }, 
            locale: user.language }}

          it 'should increment resource list by 1' do 
            expect { subject }.to change { CustomAction.count }.by(1)
          end
       end
    end

Когда я запускаю тест, я получаю: Чтобы измениться на 1, но был изменен на 2

Я проверил действие, если создать новый объект, всегда создайте один, а не два.

Правильно ли я использовал тему ? Что не так с моим тестом? Спасибо

1 Ответ

0 голосов
/ 08 января 2019

Вызов subject в вашем блоке expect оценивает блок subject. Предметный блок вызывает ваше действие, но для этого нужно оценить custom_action. В конце, при оценке блока ваш блок custom_action создает один CustomAction, а ваше действительное действие контроллера создает еще один во время запроса.

Измените let на let!, чтобы исправить ваш тест.

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