我正在为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
所以它是。我的错误,对此感到遗憾。我现在可以重现。 –