2014-01-29 39 views
0

我想創建我的測試類(LIB/calorie_form.rb)軌道4測試自定義類未初始化不斷

class CalorieForm 
    attr_accessor :is_male, :weight, :age, :height, :physical_activity, :trainings_per_week 
end 

我寫了下面的測試,並把它變成 測試/單位/ calorie_calculator_test.rb

require 'test/unit' 

class CalorieCalculatorTest < Test::Unit::TestCase 

    def test_calculations 
    calorie_form = CalorieForm.new 
    calorie_form.is_male = false 
    calorie_form.weight = 55 
    calorie_form.height = 169 
    calorie_form.physical_activity = 1.4 
    calorie_form.trainings_per_week = 4 
    end 
end 

這應該是確定(此代碼工作正常,當我把它變成控制器的方法),但是當我使用RubyMine的運行測試,我得到了以下錯誤

C:\Ruby200\bin\ruby.exe -e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) -Itest C:/CalorieCalc/test/unit/calorie_calculator_test.rb 
Testing started at 1:19 AM ... 
Run options: 

# Running tests: 

E 

Finished tests in 0.005005s, 199.8002 tests/s, 0.0000 assertions/s. 

    1) Error: 
CalorieCalculatorTest#test_calculations: 
NameError: uninitialized constant CalorieCalculatorTest::CalorieForm 
    C:/CalorieCalc/test/unit/calorie_calculator_test.rb:8:in `test_calculations' 

1 tests, 0 assertions, 0 failures, 1 errors, 0 skips 

ruby -v: ruby 2.0.0p353 (2013-11-22) [i386-mingw32] 

我有這行我application.rb中

config.autoload_paths += %W(#{config.root}/lib) 
  1. 我到底做錯了什麼?
  2. 有沒有什麼辦法自動生成測試文件 位於lib /使用RubyMine 6的類?

UPDATE

如果我寫

require 'calorie_form' 

我得到

C:/CalorieCalc/test/unit/calorie_calculator_test.rb:2:in `require': cannot load such file -- calorie_form (LoadError) 

而且我可以做

require_relative '../../lib/calorie_form' 

require 'C:\CalorieCalc\lib\calorie_form.rb' 

但是這兩種變體都非常難看。

爲什麼我不能只寫'require'calorie_form'?

回答

2

我認爲,如果你增加:/CalorieCalc/test/unit/calorie_calculator_test.rb:

require 'calorie_form' 

您的測試文件的頂部,那麼它應該爲你

+0

C時工作特性2:在'require'中:無法加載這樣的文件 - calorie_form(LoadError) –

+0

也可以做 require_relative'../../lib/calorie_form'或 需要'C:\ CalorieCalc \ lib \ calorie_form.rb',但兩者變體是非常醜陋的。 –

+0

嘗試從單元測試文件的頂部請求'test_helper',在測試/文件夾中創建'test_helper.rb'(如果不存在),並添加一個故意的異常,例如'raise'Loaded TestHelper''作爲探測器確定正在讀取文件... – SciPhi