私は、より高いレベルのメソッドを呼び出すと、メソッド呼び出しが発生することをテストできることを理解しています:すなわち:
public abstract class SomeClass()
{
public void SomeMehod()
{
SomeOtherMethod();
}
internal abstract void SomeOtherMethod();
}
SomeMethod()
を呼び出すと、SomeOtherMethod()
が呼び出されることを期待しています。
この種のテストはモックフレームワークで利用できると思いますか?
あなたがモックしたもののメソッドが検証を使用して呼び出されたかどうかを見ることができます、例えば:
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がスローされます。コメントが解除されている場合、パスします。
いいえ、模擬テストでは、注入可能な特定のテスト可能なデザインパターンを使用していることを前提としています。あなたの場合、あなたはテストすることになりますSomeClass.SomeMethod
とSomeOtherMethod
は、インターフェースが必要な別のエンティティに実装されなければなりません。
Someclass
コンストラクターはNew(ISomeOtherClass)
のようになります。次に、ISomeOtherClass
をモックし、そのSomeOtherMethod
に期待値を設定して呼び出し、期待値を検証します。