0

私はテストを適切に理解しているかどうか疑問に思っています。

モデルテストは、モックなしで実行する必要があります。例:

rspec

model.name = 'test'
model.save
model.should eq('test')

コントローラはモッキングに基づいている必要があります。

rspec

model.should_receive(:save).and_return(true)

コントローラ

def action
...
if model.save
...
end

要約すると、コントローラーは真のデータなしでテストされます。... dbで動作するモデルレイヤーとは対照的に、すべてのデータはスタブとモックによって「提供」されます。

しかし、モデルもモックする必要があると思います

model.name = 'test'
model.should_receive(:save)
model.should eq('test')

しかし、saveメソッドをテストしていないので、このようなテストの感覚はわかりません。

4

1 に答える 1

1

一般的な経験則として、それが私がそれを行う方法です。

あなたの例を使用してsave、モデル仕様でそのメソッドをテストした場合、コントローラーで再度テストする必要はありません。知っておく必要があるのは、メソッドが呼び出されることだけです。

基本的に、モデルがコントローラーにどのように反応するかではなく、コントローラーの動作をテストする必要があります。

于 2012-10-09T12:49:21.290 に答える