0

私はrspecの初心者です。

ケース例:

マイコントローラー:

def index
   id=params[:id];
   @nameTest=id+'test';
end

テストする必要があります:

  1. IDの値
  2. @nameTest の値

失敗する私のコード:

it "basic test for index" do
      get :index,:id => 'myid'
      response.code.should eq("200")
      assigns(:id).should be_kind_of('myid')
      assigns(@nameTest).should be_kind_of('myidtest')
end

ありがとう

4

1 に答える 1

0

テストにいくつかのエラーがあります。

  1. idの値をテストしようとしましたが、idはローカルメソッド変数であり、indexメソッドの実行後に消えます。ローカル変数に割り当てられた値をテストすることはできません。実際には意味がありません。仕様では、メソッド実行の結果(戻り値、変更された状態など)のみをテストする必要があります。

  2. 割り当てられた値をbe_kind_ofチェッカーでチェックします。ただしbe_kind_of、左側の値が指定された値ではなく、指定されたクラスのものであることを確認します。値を確認する必要がある場合は、==チェッカーを使用できます。

アクションの正しいテストは次のとおりです。

it "basic test for index" do
  get :index, :id => 'myid'

  response.code.should eq("200")

  assigns(:nameTest).should == 'myidtest'
end
于 2012-08-21T08:54:45.097 に答える