私は FakeItEasy ライブラリを使用して、単体テスト用の偽物を作成しています。
ClassUnderTest
メソッドをテストしたい がありますMethodToTest(Data dataObject)
。このメソッドは、私が偽造したいインターフェースのメソッドを呼び出しています:
public interface IFoo
{
void Execute(Action<IDataAccess> action);
}
public class ClassUnderTest
{
private IFoo _foo;
public ClassUnderTest(IFoo foo)
{
_foo = foo;
}
public void MethodToTest(Data dataObject)
{
_foo.Execute(dataAccess => dataAccess.Update(dataObject));
}
}
public interface IDataAccess
{
void Update(Data data);
}
public class Data
{
public int Property { get; set; }
}
単体テストでは、テスト メソッドがインターフェイスを正しく (正しいプロパティ値で) 呼び出すかどうかを確認したいと思います。
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
var foo = A.Fake<IFoo>(x => x.Strict());
A.CallTo(() => foo.Execute(dataAccess => dataAccess.Update(A<Data>.That.Matches(d => d.Property == 20))));
var cut = new ClassUnderTest(foo);
cut.MethodToTest(new Data { Property = 20 });
}
}
しかし、このテストでは何かが間違って設定されています。私は例外を受け取ります:
テスト メソッド TestProject1.UnitTest1.TestMethod1 が例外をスローしました: FakeItEasy.ExpectationException: 厳密な偽の構成されていないメソッド「Execute」への呼び出し。
誰かがCallTo()
ステートメントを正しく構成する方法を知っていますか?