Тестирование модулей в rspec - PullRequest
165 голосов
/ 09 октября 2009

Каковы лучшие практики по тестированию модулей в rspec? У меня есть несколько модулей, которые включены в несколько моделей, и сейчас у меня просто есть дублирующие тесты для каждой модели (с небольшими отличиями). Есть ли способ высушить это?

Ответы [ 12 ]

0 голосов
/ 11 мая 2018

Одно возможное решение для тестирования метода модуля, который не зависит от класса, который будет включать их

module moduleToTest
  def method_to_test
    'value'
  end
end

И спецификации для него

describe moduleToTest do
  let(:dummy_class) { Class.new { include moduleToTest } }
  let(:subject) { dummy_class.new }

  describe '#method_to_test' do
    it 'returns value' do
      expect(subject.method_to_test).to eq('value')
    end
  end
end

А если вы хотите СУХОЙ их протестировать, тогда shared_examples - это хороший подход

0 голосов
/ 13 апреля 2018

вам нужно просто включить ваш модуль в ваш файл спецификаций mudule Test module MyModule def test 'test' end end end в вашем файле спецификации RSpec.describe Test::MyModule do include Test::MyModule #you can call directly the method *test* it 'returns test' do expect(test).to eql('test') end end

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