У меня есть вызов фабричного интерфейса, который создает в обработчике IMachine
. Это возвращено IMachine
с фабрики имеет методы, которые могут быть соединены вместе, чтобы создать себя внутри класса строителя. Проблема, с которой я столкнулся с FakeItEasy
, заключается в том, что она только распознала первый вызов (который равен WithSpeeds
), если я не настроил каждый вызов метода, чтобы вернуть подделку IMachine
. Есть ли способ не настраивать каждый отдельный вызов или иметь FakeItEasy
распознавать каждый вызов метода в цепочке? Я знаю, что я должен делать что-то неправильное, потому что, если я использую OrderAssertions
и не выполняю заказ специально, не настраивая свой поддельный компьютер, он показывает, что вызовы были сделаны для всех методов. Спасибо за помощь.C# FakeItEasy и цепочка методов: распознается только первый вызов
Часть Метод командной хендлера
public void Handle(FooCommand commandParm)
{
var entity = new Entity.Builder
{
Machine = _factory.CreateMachine(commandParm.MachineName)
.WithSpeeds(commandParm.ProcessingSpeed, commandParm.StartupSpeed, commandParm.ShutDownSpeed)
.WithOils(commandParm.Lubrication, commandParm.FinishingOil)
};
}
Тест
[TestMethod]
public void HandleSetMachineSettings_should_build_machine()
{
// Arrange
var settings = CommandUtilities.ReturnFooCommand();
var _factory = A.Fake<IMachineFactory>();
var machine = A.Fake<IMachine>();
A.CallTo(() => _factory.CreateMachine(settings.MachineName)).Returns(machine);
// Act
_handler.Handle(settings);
// Assert
machine.Should().NotBeNull();
A.CallTo(machine).Where(x => x.Method.Name.Equals("set_MachineNumber")).WhenArgumentsMatch(arg => arg.Get<int>(0) == settings.MachineNumber).MustHaveHappened(Repeated.Exactly.Once);
A.CallTo(() => machine.WithSpeeds(commandParm.ProcessingSpeed, commandParm.StartupSpeed, commandParm.ShutDownSpeed)).MustHaveHappened(Repeated.Exactly.Once);
A.CallTo(() => machine.WithOils(commandParm.Lubrication, commandParm.FinishingOil)).MustHaveHappened(Repeated.Exactly.Once);
}
спасибо! Это именно то, что я искал. Я всегда могу рассчитывать на то, что вы поможете мне с вопросами «FakeItEasy». Я приближаюсь к 900 испытаниям по этому проекту, и большинство из них благодаря «FakeitEasy», поэтому я ценю тяжелую работу от вас и вашей команды. –