NMock2.0 に関するドキュメントではわからなかった簡単な質問があります。
モックアウトしたい Save() という関数があります。これは、文字列 ID をパラメーターとして取り、10 進数を値として取ります。
Save() が2つの特定の値で呼び出されることを確認するためにこれを書くことができることを私は知っています:
Expect.Once.On(dao) _
.Method("Save").With(New Object() {"foo", 1})
ただし、これは「foo」と 1 が渡された場合にのみ渡されます。値「foo」を制御できますが、2 番目の値については、それがどうなるかわかりません。または、少なくともこの特定のテストで値がどうなるかをテストすることは気にしません。
私は書くことができることを知っています:
Expect.Once.On(dao) _
.Method("Save").WithAnyArguments()
しかし、これにより、私はあらゆる議論を渡すことができます。そのため、保存インターフェイスが変更され、後で 5 つのパラメーターを受け取る場合でも、テストはパスします。
適切なタイプの2つのパラメーターのみを受け取るようにするにはどうすればよいですか?
おそらくもっと重要なことですが、このような単体テストを書くのは脆すぎますか? たぶん、パラメータを期待するようにコーディングして、リファクタリングするたびに戻ってその行を変更する必要がないようにする必要がありますか? 多くのモックを使用するテスト ケースは非常に脆弱であり、リファクタリングするたびにそれらを変更する必要があることがわかりました...ここでモックを誤用しているのでしょうか? このようなことはまだかなり新しいので、アドバイスをいただければ幸いです。