2

MiniTest::Spec と Mocha の使用:

 describe "#devices" do
   it "scopes the devices by the provided :ip_list" do
     ips = 'fast tests ftw!'
     ds = DeviceSearch.new ip_list: ips
     Device.expects(:scope_by_ip_list).once.with(ips)
     ds.devices
   end
 end

コードを正しく動作させると、このテストは失敗します。これは、 stubsDevice.expects(:scope_by_ip_list)も呼び出すためです。 aまたはそのようなものを指定していないため、 でメソッドをスタブ 化します。したがって、デバイスのリストを適切にスコープしてからさらに操作を行う私のコードでは、さらに操作が爆発します。Device.scope_by_ip_list.returns(Devices.scoped)nil

ただし、パラメーターを指定する必要はありません.returnsパラメーターが何を返すかはまったく気にしないからです。メソッドをスタブしたくありません。私はそれに期待を設定し、そのまま機能させたいだけです.

それを行う方法はありますか?

(私には、次のようなことを言うのは非常にぎこちないように思えDevice.expects(:foo).returns('bar')ます —私が言うとき、私はそのメソッドをスタブすると言っているのではありません! スタブしたい場合は、と言うことができます。)Model methodDevice.stubs(:foo)

4

1 に答える 1

0

この動作は意図されたものであり、変更することはできません。次の投稿を見て、それを回避する方法を確認してください。

rspec 2: メソッドへの呼び出しを検出しますが、それでもその機能を実行します

于 2012-05-08T16:43:08.130 に答える