Итак, Rails 3.1 поставляется с малоизвестным удобным генератором «rails g plugin new», который дает вам скелет, подходящий для плагина gem gem. [http://guides.rubyonrails.org/plugins.html#or-generate-a-gemified-plugin]Rails 3.1 plugem gem, приложение для тестирования припасов, rspec
Одна из полезных вещей, которые это делает, - это удобно настроить для тестирования с помощью Test :: Unit. Это дает вам базовое фиктивное приложение Rails, которое ваши тесты могут выполнять в контексте, для проверки поведения «engine», которое работает только в копии приложения Rails. (он помещает его ./test/dummy). Но ваши тесты все еще находятся в my_gem/test, тесты не живут в фиктивном приложении. И там есть my_gem/test/test_helper.rb, написанный так, что тесты будут выполняться в контексте фиктивного приложения, загруженного в ../dummy/config/environment.
Я описываю это, потому что я думаю, что многие люди не знают об этом новом генераторе, который так хорошо складывает вещи.
Но мой вопрос: кто-нибудь понял, как это сделать с помощью rspec? Я попытался следовать тем же принципам DIY, чтобы настроить такие вещи для rspec в gim-плагине rails, но я сталкиваюсь с различными запутанными блокпостами, и надеюсь, что кто-то еще это выяснил (или был бы заинтересован в том, чтобы понять это для остальных из нас, хех).
Для меня строка: 'require File.expand_path (« ../../ config/environment », __FILE __)' был расположен по адресу 'spec/rails_helper.rb' вместо 'spec/spec_helper.rb'. Это связано с изменением Rspec? – J3RN
Если вы сохраните фиктивную папку внутри spec /, то rspec найдет ваши файлы спецификаций два раза. Первый раз для gem, второй раз для приложения rails, так как patter будет соответствовать всем файлам spec, если они находятся под символической ссылкой или нет. [--exclude-pattern] (https://relishapp.com/rspec/rspec-core/v/3-3/docs/configuration/exclude-pattern), похоже, работает только вместе с --pattern. 'config.pattern << ',! Spec/dummy'' и, похоже, не работает Единственное решение, которое, кажется, исправляет этот случай, состоит в том, чтобы иметь папку-заглушку вне папки спецификации – Max
Ссылка на tumblr статья на самом деле сломана ... @ nathan-amick вы загрузили ее в другое место? – opsidao