くうと徒然なるままに

モバイルアプリを作りながらバックエンドも作っています。

Moq で Null を返り値 に設定する方法

モックを簡単に作成できるライブラリの Moq 使ってますか?

モックを利用していて、返り値に Null を設定したいことはよくあるかと思います。

解決策

returns() の引数に渡すときに null を関数本来の戻り値の型にキャストしてやる。

コンパイラ的に考えると null 自体には、型が無いので、モック対象の関数と型があっているかは証明できないですものね... 明示的にキャストすることで型を指定することができて、設定できるというオチでした。

コード

            public interface Ihoge
            {
                String GetName();
            }
            
            public class hoge:Ihoge
            {
                String GetName() => "ku";
            }
            
            [Fact]
            public void モックの返り値にNullを設定する()
            {
                var hogeMoq = new Mock<IHoge>();
                hogeMoq.Setup(obj => obj.GetName()).Returns((String) nulll);
                
                // あとはお好きなコードを...
            }