2

次のコードがあります。

var boundArgument = new BoundArgumentOption
{
    PatientId = patientId
};

var mockRepositoryFactory = A.Fake<IRepositoryFactory>();

var sut = new HtmlOutputBuilder(mockRepositoryFactory);

var patientRecord = // Some record;

var mockRepository = A.Fake<IRepository>();
A.CallTo(() => mockRepository.Get(boundArgument)).Returns(patientRecord);
A.CallTo(() => mockRepositoryFactory.Create(boundArgument)).Returns(mockRepository);

string actualResult = sut.BuildReport(boundArgument);

actualResult.Should().Be(expectedHtmlContent);

そしてそれはテストに合格します。

次に、次のように AutoFixture を使用してみました。

var fixture = new Fixture().Customize(new AutoFakeItEasyCustomization());

var boundArgument = fixture.Create<BoundArgumentOption>();

var mockRepositoryFactory = A.Fake<IRepositoryFactory>();

fixture.Freeze(mockRepositoryFactory);

var sut = fixture.Create<HtmlOutputBuilder>();

var patientRecord = //Some record;

boundArgument.PatientId = patientId;

var mockRepository = A.Fake<IRepository>();
A.CallTo(() => mockRepository.Get(boundArgument)).Returns(patientRecord);

A.CallTo(() => mockRepositoryFactory.Create(boundArgument)).Returns(mockRepository);

string actualResult = sut.BuildReport(boundArgument);

actualResult.Should().Be(expectedHtmlContent);

これは失敗します。特に、patientRecord2 番目のインスタンスの は適切に設定されていません。

ここで何が間違っていますか?

4

1 に答える 1