0

ruby のテストを始めたばかりで、テストのようにコードを書く方法がわかりません。テストファイルからの完全なタスクは次のとおりです。

require "temperature"

describe "temperature conversion functions" do
  describe "#ftoc" do
    it "converts freezing temperature" do
      ftoc(32).should == 0
    end

    it "converts boiling temperature" do
      ftoc(212).should == 100
    end

    it "converts body temperature" do
      ftoc(98.6).should == 37
    end

    it "converts arbitrary temperature" do
      ftoc(68).should == 20
    end
  end

  describe "#ctof" do
   it "converts freezing temperature" do
     ctof(0).should == 32
   end

   it "converts boiling temperature" do
     ctof(100).should == 212
   end

   it "converts arbitrary temperature" do
     ctof(20).should == 68
   end
  end
end

私のコードファイルでは、これを試します:

def ftoc(f)
  (f - 32) / 1.8
end

ターミナルからrakeコマンドから実行します。熊手が言うより

temperature conversion functions
#ftoc
converts freezing temperature
converts boiling temperature
converts body temperature (FAILED - 1)
4

1 に答える 1

0

このコードを問題なく実行します

# controllers/temp_spec.rb
require 'spec_helper'

describe "#ftoc" do
  it "converts freezing temperature" do
    ftoc(32).should == 0
  end
end

def ftoc(f)
  (f - 32) / 1.8
end

# $ rspec spec/controllers/temp_spec.rb
# => One example, 0 failure

==を使用する代わりに、 を使用しないこともお勧めしますeq。例えばftoc(32).should eq(0)。この場合、それは違いはありませんが。

アップデート

更新された質問を見ました。あなたのコードは別のファイルにありますか?Rspec はどのようにしてあなたのコードを知ることができますか? コードが標準の対応するRailsファイル内にない場合、それが問題です。

あなたの場合、仕様でコードファイルを要求する必要があり、クラスの新しいインスタンスを作成するか (メソッドがクラス内にある場合)、モジュールを使用してメソッドをグローバルに公開します。

于 2013-03-29T16:34:29.397 に答える