3

私が欲しいのは、各スペックファイルでテスト対象のクラスを「要求」する必要がない方法です。

したがって、テスト対象のソースコードのルートを設定し、rspecがテストを自動的にマッピングする手段、または仕様をrubyファイルに自動的にマッピングするその他の手段があることを期待しています。

RailsのRspecでは、これは魔法のように起こりますが、これはRailsプロジェクトではなく、有用な情報を見つけることができません。

4

2 に答える 2

3

プロジェクト内にlibフォルダーとspecフォルダーがあり、それぞれコードとスペックがあると想定しています。を作成しspec/spec_helper.rbて追加

 # project_name/spec/spec_helper.rb
 $: << File.join(File.dirname(__FILE__), "/../lib") 
 require 'spec' 
 require 'main_file_within_lib_folder_that_requires_other_files'

これで、個々のスペックファイル内に、railsのような次の行を追加する必要があります。

 require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
于 2010-02-21T00:16:14.967 に答える
0

あなたがしなければならないことは、を再定義することですObject.const_missing

この基本的な例を見つけて、ニーズに合わせて変更します(正しいパスを設定するなど)。

def Object.const_missing(name)
  @looked_for ||= {}
  str_name = name.to_s
  raise "Class not found: #{name}" if @looked_for[str_name]
  @looked_for[str_name] = 1
  file = str_name.downcase
  require file
  klass = const_get(name)
  return klass if klass
  raise "Class not found: #{name}"
end
于 2010-02-20T23:51:25.893 に答える