web-dev-qa-db-ja.com

Moqの用途は何ですか?

DotNetKicksなどでこれが参照されているのを見続けています...それでも、それが何であるか(英語で)、またはそれが何をするのかを正確に知ることはできませんか?それが何であるか、またはなぜ私がそれを使用するのか説明していただけますか?

23
leen3o

Moq は、C#/。NETのモックフレームワークです。単体テストでは、テスト対象のクラスを依存関係から分離し、依存オブジェクトの適切なメソッドが呼び出されていることを確認するために使用されます。モックの詳細については、ウィキペディアの記事 モックオブジェクト を参照してください。

他のモックフレームワーク(.NET用)には、 JustMockTypeMockRhinoMocksnMock などがあります。

33
tvanfosson

簡単な英語で、Moqはプロジェクトに含めると、簡単な方法でユニットテストを実行できるライブラリです。どうして?ある関数が別の関数を呼び出し、次に別の関数を呼び出す可能性があるためです。しかし、実際に必要なのは、最初の呼び出しからの戻り値だけで、次の行に進みます。 Moqは、そのメソッドの実際の呼び出しを無視するのに役立ち、代わりに、その関数が返していたものを返します。コードのすべての行が実行された後、必要なものが取得したものかどうかを確認します。英語が多すぎるので、ここに例を示します。

_String Somethod()
{
  IHelper help = new IHelper();
  String first = help.firstcall();
  String second= secondcall(first);
  return second;
}
_

ここで、secondcall()にはfirstが必要ですが、他のレイヤーのように実際にhelp.firstcall()を呼び出すことはできません。したがって、モックが実行され、そのメソッドが呼び出されたように見せかけます。

_[TestMethod]
public void SomeMethod_TestSecond
{
  mockedIHelper.Setup(x=>x.firstcall()).Returns("Whatever i want");  
}
_

ここで、SetUPを偽のメソッド呼び出しとして考えてみましょう。ここでは、Returnsに関心があります。

15
Rajesh Mishra

Moqは、.NetTDDを実行するためのモックエンジンです。

3
Matt Grande