Moqを使用してメソッドが呼び出されるかどうかを判断する質問する

Moqを使用してメソッドが呼び出されるかどうかを判断する質問する

私の理解では、より高レベルのメソッドを呼び出すとメソッド呼び出しが発生することをテストできます。つまり、

public abstract class SomeClass()
{    
    public void SomeMehod()
    {
        SomeOtherMethod();
    }

    internal abstract void SomeOtherMethod();
}

呼び出すとそれが呼び出されるSomeMethod()ことを期待するかどうかをテストしたいと思います。SomeOtherMethod()

この種のテストはモック フレームワークで利用できると考えるのは正しいでしょうか?

ベストアンサー1

Verify を使用すると、モックしたメソッドが呼び出されたかどうかを確認できます。例:

static void Main(string[] args)
{
        Mock<ITest> mock = new Mock<ITest>();

        ClassBeingTested testedClass = new ClassBeingTested();
        testedClass.WorkMethod(mock.Object);

        mock.Verify(m => m.MethodToCheckIfCalled());
}

class ClassBeingTested
{
    public void WorkMethod(ITest test)
    {
        //test.MethodToCheckIfCalled();
    }
}

public interface ITest
{
    void MethodToCheckIfCalled();
}

行がコメントのままになっていると、Verify を呼び出すときに MockException がスローされます。コメントが解除されている場合は成功します。

おすすめ記事