びぼーろくっ!

誰かに見せるわけでもないけど、備忘録として。。

C#でのMOCKの基本的な使い方

今MOCKを中心としてソースコードを記載しているのですが
忘れないように基本的な部分を書いてみました。
参考にならないかもしれませんが、備忘録として。

参考例:

//MoqをNUGETからDL後、下記を定義
using Moq;

//定義
var mock = new Mock</*インターフェース*/>();
//定義したMockの関数を設定
//ImplementMethod //ごまかしたい関数
// IsAny Matches any value of the given TValue type
mock.Setup( x=> x.ImplementMethod(It.IsAny</*型*/>()))
	.Returns/*非同期の場合Asyncを追加*/(  /*戻したい型やobject*/);

実装全て

using Moq;

namespace Verification
{
    //実装部分がまだなInterfaceクラス
    public interface IUnfinishedClass
    {
        string ImplementMethod(string num);
    }
    //IUnfinishedClassの処理が必要なメソッド
    public class Call
    {
        public string CallImplement()
        {
            var mock = new Mock<IUnfinishedClass>(); //Mockを定義
            //InterfaceのImplementMethodをラムダで定義。
            //IsAnyを使用するといつでも呼び出せる
            mock.Setup(x => x.ImplementMethod(It.IsAny<string>()))
                .Returns("さようなら");
            var mockMethod = mock.Object; //Setupしたobjectを定義,interfaceが返る
            
            return mockMethod.ImplementMethod("こんにちは"); //実装部分はないが呼び出される
        }
    }
}
出力結果:さようなら