我剛剛注意到,只要我在Build<>()
-Create()
之間的夾具上做Freeze
調用Freeze
s沒有得到應用。它是否打算AutoFixture的行爲或錯誤?AutoFixture建立凍結創建序列
爲了把事情說清楚:
var fixture = new Fixture().Customize(new AutoMoqCustomization())
var builder = fixture.Build<SomeType>();
fixture.Freeze<Mock<ISomeInterface>>().Setup(m => m.SomeProperty).Returns(10);
var sut = builder.Create();
// if SomeType uses ISomeInterface.SomeProperty it will get 0 returned - *incorrect*
這工作得很好:
var fixture = new Fixture().Customize(new AutoMoqCustomization())
fixture.Freeze<Mock<ISomeInterface>>().Setup(m => m.SomeProperty).Returns(10);
var sut = fixture.Create<SomeType>();
// if SomeType uses ISomeInterface.SomeProperty it will get 10 returned - correct
感謝解釋。我實際上以另一種方式解決了這個問題 - 在Build-Create之間調用自定義事件,這樣我就可以將序列保持在不影響'Freeze's的地方 – SOReader