Создание отсутствующих спецификаций для RSpec - PullRequest
16 голосов
/ 19 мая 2009

Доступна ли какая-либо команда для создания всех отсутствующих файлов спецификаций для существующих моделей / контроллеров? У меня есть проект, в котором есть несколько моделей, которые были созданы без наших спецификаций.

Ответы [ 4 ]

17 голосов
/ 03 июня 2011

В rspec-rails-2, который предназначен для Rails 3, все генераторы rspec были удалены.

Вы можете решить эту проблему, запустив генератор модели рельсов. Вы можете добавить -s, чтобы пропустить любые существующие файлы, и --migration = false, чтобы пропустить создание файла миграции.

Вот так:

rails generate model example -s --migration=false
7 голосов
/ 19 мая 2009

Вы можете просто запустить генератор и игнорировать модели / миграции / приспособления.

ruby script/generate rspec_model User --skip-migration --skip-fixture --skip

Я пытался написать что-то, чтобы сделать это, но не было никакого интереса со стороны других.

1 голос
/ 10 февраля 2015

Если количество отсутствующих спецификаций довольно мало, вы можете просто запустить команды rails generate для каждого компонента с отсутствующими спецификациями.

Когда возникает конфликт, просто не перезаписывайте исходный файл. Генератор проигнорирует существующие файлы и сгенерирует недостающие.

0 голосов
/ 03 декабря 2013

https://gist.github.com/omenking/7774140

require 'fileutils'
namespace :spec do

  def progress name, x, y
    print "\r #{name}: #{x}/#{y} %6.2f%%" % [x.to_f/y * 100]
  end

  def generate_files name
    kind       = name.to_s.singularize
    collection = Dir.glob Rails.root.join('app',name.to_s,'**','*').to_s
    root       = Rails.root.join('app',name.to_s).to_s<<'/'
    ext        = case name
                   when :controllers then  '_controller.rb'
                   when :models      then  '.rb'
                end
    count = collection.count
    collection.each_with_index do |i,index| 
      `rails g #{kind} #{$1} -s` if i =~ /#{root}(.+)#{ext}/
      progress name, index, count
    end
  end

  task generate_missing: :environment do
    generate_files :controllers
    generate_files :models
  end
end

# if you dont want certian things generated than
# configure your generators in your application.rb eg.
#
#   config.generators do |g|
#     g.orm :active_record
#     g.template_engine :haml
#     g.stylesheets false
#     g.javascripts false
#     g.test_framework :rspec,
#                      fixture: false,
#                      fixture_replacement: nil
#   end
#
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...