(転)Moqテスト基礎説談(三)——属性、常用方法

2807 ワード

(一)属性(1)テスト準備:public class Customer{public virtual int Unit{get;set;}public virtual string Name { get; set; } } var customer=new Mock()をテストします.customer.Setup(p => p.Name).Returns("Tom");
customer.SetupProperty(p => p.Name, "tt"); 以下では、通常のプロパティアクセスと同じプロパティを使用できます.(二)Callbacksあるメソッドを実行するとき、その内部入力を呼び出す(Action)依頼はその5種類のリロードを見る:Callback(Action)Callback(Action)Callback(Action)Callback(Action)Callback(Action)このメソッドはその内部入力のAction委任を呼び出し、Actionnは5種類のリロードがあるので、ここのCallbacksは5種類のリロードがある.2つ目の例では、ICallbackResult Callback(Actionaction)という入力パラメータを表し、var customer=new Mock()と定義されています.customer.Setup(p => p.GetCall(It.IsAny())) .Returns(「メソッド呼び出し」).Callback((string s)=>Console.WriteLine("ok"+s)); customer.Object.GetCall("x");
このCallbackはGetCall(string s)のsパラメータを呼び出します.(3)Verifyはmockオブジェクトのメソッドまたは属性が実行を呼び出されるかどうかをテストするために使用される.テスト結果が不要な場合は、Verify()Verify(Expression>)Verify(Expression>)Verify(Expression>,Times)Verify(Expression>,String)Verify(Expression>,Times)Verify(Expression>,String)Verify(Expression>,Times)Verify(Expression>,String)Verify(Expression>,Times,String)Verify(Expression>,Times,String)
これらの3つの例の1つ目は、public void Verify()テストpublic void TestVerify(){var customer=new Mock();customer.Setup(p=>p.GetCall(It.IsAny()).Returns("メソッド呼び出し")).Callback((string s)=>Console.WriteLine("ok"+s)).Verifiable();
**customer.Object.GetCall(" !");**
customer.Verify();

}MockオブジェクトのGetCallメソッドを確認可能(Verifiable()に設定し、太字部分文を呼び出さなければcustomer.Verify()実行はパスできません.この方法はとても役に立つ.
2つ目:Verify(Expression>)、定義:public void Verify(Expression>expression)
customer.Verify(p => p.GetCall("call")); 呼び出しがなく、call文字列のパラメータが入力されていない場合は失敗します.3つ目:Verify(Expression>,Times,String)定義:public void Verify(Expression>expression,Times times,string failMessage)
これは、前回よりも2つのパラメータが多く、1つは呼び出し回数に関する説明、1つは失敗した場合の印刷情報customerである.Setup(p => p.GetCall(It.IsAny())) .Returns(「メソッド呼び出し」).Callback((string s) => Console.WriteLine("ok"+ s)) .Verifiable(); customer.Object.GetCall("call"); customer.Object.GetCall("call"); customer.Verify(p => p.GetCall("call"), Times.AtLeast(2)、「少なくとも2回呼び出されるべき」);
GetCallメソッドが最低2回(パラメータがcall)呼び出された場合、テストは成功しました.メソッドのTimesは、複数のメソッドがあります.AtLeast AtLeastOnce AtMost AtMostOnce Between Exactly Never Onceは、それぞれがどういう意味なのかを意味的に理解できます.たとえば、AtLeastの定義は、public static Times AtLeast(int callCount)(4)VerifyAllがVerifyメソッドを使用する場合、Verifyメソッドとしてマークされている(.Verifiable())のみ検証できます.ただし、VerifyAllはすべての呼び出しを検証します.
customer.Setup(p => p.GetCall(It.IsAny())) .Returns(「メソッド呼び出し」).Callback((string s) => Console.WriteLine("ok"+ s));
customer.Object.GetCall("call"); customer.VerifyAll();