FakeItEasyを使用してテストを行っていますが、問題が発生しました。 期待されたデータが偽装されたサービスに送信されることをテストするとき、私はエラーデータも見ることができるようにしたいと思います。 今私は、呼び出しが起こったことがないことがわかります。 多分私はそれを間違って設定しているかもしれませんが、それを修正する方法についていくつかのヒントがあります。 :)FakeItEasyでメソッドのパラメータを確認する方法と、呼び出しが行われたことを確認する方法
私の場合は: 同じサービスを別々の値で2回呼び出します。 私はそれぞれの呼び出しを確認するために別々のテストが必要です。 いずれかのパラメータに期待値がない場合は、それを示すエラーメッセージが表示されます。 Assert.AreEqual()の場合と同様です。
今私は「コールは起こらなかった」ということを理解しています。これは私がテストしていることを実感しているからです。しかし、特定の呼び出しが1回だけ行われたことを確認できるようにしたいと思います。発生しなかった場合は、どの値が使用されていないかを確認したいと思います。
私はこのソリューションを使用しました:http://thorarin.net/blog/post/2014/09/18/capturing-method-arguments-on-your-fakes-using-fakeiteasy.aspx 私は1回しかコールしていませんが、2回のコールでは機能しません。
[TestFixture]
public class TestClass
{
[Test]
public void TestOne()
{
// Arrange
var fake = A.Fake<IBarservice>();
var a = new Foo(fake);
// Act
a.DoStuff(1);
//Assert
A.CallTo(() => fake.DoOtherStuff(A<int>.That.Matches(x => x == 2))).MustHaveHappened(Repeated.Exactly.Once);
}
[Test]
public void TestTwo()
{
// Arrange
var fake = A.Fake<IBarservice>();
var a = new Foo(fake);
// Act
a.DoStuff(1);
//Assert
A.CallTo(() => fake.DoOtherStuff(A<int>.That.Matches(x => x == 3))).MustHaveHappened(Repeated.Exactly.Once);
}
}
public class Foo
{
private readonly IBarservice _barservice;
public Foo(IBarservice barservice)
{
_barservice = barservice;
}
public void DoStuff(int someInt)
{
someInt++;
_barservice.DoOtherStuff(someInt);
// I should have increased someInt here again, but this is a bug that my tests catches
_barservice.DoOtherStuff(someInt);
}
}
public interface IBarservice
{
void DoOtherStuff(int someInt);
}