Где я должен хранить методы, чтобы сделать их доступными как для моего приложения, так и для RSpec? - PullRequest
3 голосов
/ 08 декабря 2011

Мне нужно создать некоторые методы, которые доступны как для моего приложения (модели, представления и контроллеры), так и для RSpec.

В частности, мне нужно создать несколько методов path_helper, которые содержат критическую логику. Мне нужно сделать их доступными для RSpec, чтобы я мог запускать такие тесты, как:

controller.should redirect_to my_custom_path_helper(@object)

Я полагаю, что они должны идти куда-то в /lib, но я не уверен, как это структурировать (модуль mixin - если так, во что я должен смешивать модуль?).

Альтернативным вариантом было бы, если бы я мог получить доступ к Помощникам по приложениям из RSpec.

РЕДАКТИРОВАТЬ: Обратите внимание

Речь идет не о тестировании вспомогательных методов , а о том, чтобы сделать их доступными как для приложения, так и для RSpec.

Мне нужно сделать это , потому что мне нужна логика-обертка вокруг моих рельсов path_helpers и когда я тестирую should redirect_to .._path в RSpec, я не хочу дублировать логику этих помощников пути.

Ответы [ 3 ]

12 голосов
/ 21 января 2012

Вы можете сделать так, чтобы RSpec включал модуль, (в spec / spec_helper.rb):

RSpec.configure do |config|
  config.include YourModule
end

Если вы хотите использовать помощники пути маршрутизации, вы можете включить их следующим образом:

RSpec.configure do |config|
  config.include Rails.application.routes.url_helpers
end
1 голос
/ 09 декабря 2011

гем Rspec-rails поддерживает вспомогательное тестирование

гем может сделать помощников доступными в любой из ваших спецификаций: «Написание спецификаций для ваших помощников совсем несложно. Просто скажитеГруппа примеров: имя помощника, и Группа примеров предоставит объект, который включает помощника ".

0 голосов
/ 08 декабря 2011

Не пробовал, но это выглядит как интересный подход к проблеме: Добавление теста rspec для библиотечного модуля, похоже, не соответствует ожиданиям и сопоставлениям

Модель, которую мы часто используем при тестировании модулей, заключается в том, чтобы включить модуль либо в класс, созданный для теста (внутри файла спецификации), либо в саму спецификацию.

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