Запуск rspec из кода приложения rails - PullRequest
0 голосов
/ 05 октября 2011

У меня возникла ситуация, когда мне нужно проверить некоторые регулярные выражения.

Итак, во время запуска приложения я могу захотеть проверить это регулярное выражение:

  1. Не содержит пробелов
  2. Содержит только определенное количество групп захвата
  3. Не использует определенные символы
  4. содержит только определенное количество подстановочных знаков

rspec кажется идеальным инструментом для этого. Однако я понимаю, что он обычно используется для тестирования интерфейсов приложений, предположений и логики до запуска приложения. Но естественный синтаксис в сочетании с автоматическим выводом отчетов было бы неплохо иметь.

Вопросы: Это правильное использование rspec?

Как можно вызвать описание из запущенного приложения?

Или я должен отказаться от этого подхода и просто написать методы в своем классе для выполнения проверок?

Ответы [ 3 ]

1 голос
/ 05 октября 2011

Использование rspec таким способом крайне нежелательно и необычно.Вы должны оставить код тестирования в группе: test в своем Gemfile и не ссылаться на него в своем приложении.

Вместо этого используйте проверки rails, что ваше поле соответствует формату регулярных выражений, а затем напишите тесты в rspec для проверки ваших проверок.

0 голосов
/ 05 октября 2011

Если вы хотите создать отчет, вы можете использовать глобальный после (: все) {ставит «отчет идет сюда»} или после (: каждый).Если вы ожидаете, что некоторые ваши данные подорвут ваши тесты, вы можете проверить на .should повышение_exception.Я полагаю, вы бы написали много обработчиков исключений, чтобы не допустить ожидаемых сбоев в выводе.Запись результатов в базу данных или файл также может раздражать.Если вы можете, опишите тест, который вы выполняете с данными, а затем просто проанализируйте вывод rspec в конце.

class Car
  attr_accessor :doors
end

describe "Car" do

  it "should have doors" do
    Car.new.should respond_to(:doors)
    fail("failing intentionally")
  end

  it "should pass this easily" do
    Car.new should_not be nil
  end

  after(:all) { puts "report here" }
end

Ниже вы можете увидеть, что у меня есть описание теста, который не прошел.

$ rspec rspec_fail.rb
F.report here

Failures:

  1) Car should have doors
     Failure/Error: fail("failing intentionally")
     RuntimeError:
       failing intentionally
     # ./rspec_fail.rb:9:in `block (2 levels) in <top (required)>'

Finished in 0.00052 seconds
2 examples, 1 failure

Мне было бы достаточно просто составить отчет об ошибках, если бы он проверял текст и регулярные выражения.Failure/Error: fail("Data has spaces") и т. Д.

0 голосов
/ 05 октября 2011

Это определенно что-то новое: использование rspec внутри рельсов для проверки. Но для конкретных проблем обычно предлагают использовать DSL, и поэтому rspec - это DSL, который может идеально подойти для вашей работы.

Так что, если это так: почему бы нет, да, продолжайте. Проявите творческий подход и найдите новые способы использования имеющихся у вас инструментов.

Просто небольшое предупреждение: из нескольких отмеченных вами пунктов сложность не кажется слишком большой, поэтому убедитесь, что вы не используете базуку, чтобы убить муху. Rspec - это большой и очень мощный инструмент, привязка к rspec для запуска во время процесса rails может быть не совсем простой.

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