Я использую FakeItEasy для проведения некоторых тестов, но у меня возникла проблема. При проверке того, что ожидаемые данные отправляются в поддельную службу, я хотел бы также видеть данные об ошибках. Прямо сейчас я вижу только, что вызова никогда не было. Возможно, я настроил все неправильно, но тогда мне хотелось бы узнать, как исправить это. :)Как проверить параметры метода с помощью FakeItEasy, а также сделать вызов
Мое дело: Вызов одной и той же услуги дважды, с разными значениями. Я хочу отдельные тесты для проверки каждого вызова. Если какой-либо из параметров не имеет ожидаемого значения, я бы хотел получить сообщение об ошибке. Аналогично тому, как вы делаете Assert.AreEqual().
Прямо сейчас я получаю «Звонок не случилось», что совершенно понятно, потому что я понимаю, что это то, что я тестирую. Но я хотел бы иметь возможность проверить, что конкретный вызов был сделан только один раз, и если бы этого не произошло, я хотел бы видеть, какие значения использовались, чтобы этого не произошло.
Я использовал это решение: http://thorarin.net/blog/post/2014/09/18/capturing-method-arguments-on-your-fakes-using-fakeiteasy.aspx , когда у меня был только один звонок, но с двумя вызовами он не работает.
[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);
}