0

特定のシナリオでは、Ruby で特定のメーカー文字列のバイナリ ファイルを grep します。関連する Mock オブジェクトを Rspec で作成したいと考えています。次のことを試しましたが、役に立ちませんでした。

  File.stub!(:exist?).with(<binary_file>).and_return(true)
  File.stub!(:read?).with(<binary_file>).and_return('XYZ')

ここで何が欠けていますか?

4

1 に答える 1

0

まず、!からを削除し#stubます。新しいバージョンの RSpec では使用されません。次に、述語メソッドではないため、でstub(:read?)ある必要があります。stub(:read)

実装コードを見なくても、これらの変更によって正しい方向に進むはずです。

とはいえ、避けられる場合は、このようなクラス メソッドのスタブ化には反対する傾向があります。これは、テストを通じて状態が漏洩するリスクがかなり大きいためです。代わりに、ファイルを検索して のインスタンスを受け入れるコンポーネントを設計すると、IO完全に破棄可能なモック オブジェクトを渡すのがはるかに簡単になります。

于 2012-06-11T02:16:14.143 に答える