我正在爲related SO question編寫ApiControllerConventions
的單元測試,我寫了AutoMoqApiControllerDataAttribute
將此ICustomization
集成到xUnit.net中。AutoFixture AutoDataAttribute的單元測試中的ArgumentNullException
public class AutoMoqApiControllerDataAttribute : AutoDataAttribute
{
public AutoMoqApiControllerDataAttribute() : this(new Fixture())
{
}
public AutoMoqApiControllerDataAttribute(IFixture fixture) : base(
fixture.Customize(new ApiControllerConventions()))
{
}
}
我試着寫一個單元測試,像這樣該屬性:
public class AutoMoqDataAttribute : AutoDataAttribute
{
public AutoMoqDataAttribute() : this(new Fixture())
{
}
public AutoMoqDataAttribute(IFixture fixture) :
base(fixture.Customize(new AutoMoqCustomization()))
{
}
}
[Theory, AutoMoqData]
public void AutoMoqApiControllerDataAttribute_ContainsCorrectCustomization(
Mock<IFixture> mockFixture)
{
// Arrange
mockFixture.Setup(f => f.Customize(It.IsAny<ApiControllerConventions>())).Verifiable();
// Act
var sut = new AutoMoqApiControllerDataAttribute(mockFixture.Object);
// Assert
mockFixture.Verify(f => f.Customize(It.IsAny<ApiControllerConventions>()), Times.Once);
}
這種失敗與AutoDataAttribute
一個例外:
System.ArgumentNullException 值不能爲空。 參數名:燈具 在Ploeh.AutoFixture.Xunit2.AutoDataAttribute..ctor(IFixture夾具)
我想到了AutoMoqDataAttribute
所以我恢復到香草Fact
,相同的異常還是這關係到我的用法:
[Fact]
public void AutoMoqApiControllerDataAttribute_ContainsCorrectCustomization()
{
// Arrange
var mockFixture = new Mock<IFixture>();
mockFixture.Setup(f => f.Customize(It.IsAny<ApiControllerConventions>())).Verifiable();
// Act
var sut = new AutoMoqApiControllerDataAttribute(mockFixture.Object);
// Assert
mockFixture.Verify(f => f.Customize(It.IsAny<ApiControllerConventions>()), Times.Once);
}
爲什麼我會得到異常?我顯然有IFixture
嘲笑,它絕對不是空的。
無法重現。請分享'AutoMoqApiControllerDataAttribute'。 –
它在我的問題的頂部:) – rexcfnghk
所以它是。我的錯誤,對此感到遺憾。我現在可以重現。 –