J'écrivais un test unitaire pour ApiControllerConventions
à partir d'un related SO question et j'ai écrit un AutoMoqApiControllerDataAttribute
pour intégrer ce ICustomization
dans xUnit.net.ArgumentNullException dans un test unitaire pour AutoFixture AutoDataAttribute
public class AutoMoqApiControllerDataAttribute : AutoDataAttribute
{
public AutoMoqApiControllerDataAttribute() : this(new Fixture())
{
}
public AutoMoqApiControllerDataAttribute(IFixture fixture) : base(
fixture.Customize(new ApiControllerConventions()))
{
}
}
J'ai essayé d'écrire un test unitaire pour cet attribut comme ceci:
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);
}
Cela échoue à l'exception de AutoDataAttribute
:
System.ArgumentNullException valeur ne peut pas être nulle. Nom du paramètre: appareil à Ploeh.AutoFixture.Xunit2.AutoDataAttribute..ctor (de montage IFixture)
Je pensais que cela est lié à mon utilisation du AutoMoqDataAttribute
donc je Reconvertit à la vanille Fact
, même exception encore:
[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);
}
Pourquoi est-ce que je reçois l'exception? J'ai évidemment le IFixture
raillé et ce n'est certainement pas nul.
Impossible de reproduire. S'il vous plaît partager 'AutoMoqApiControllerDataAttribute'. –
C'est en haut de ma question :) – rexcfnghk
Donc c'est. Mon erreur, désolé à ce sujet. Je peux maintenant reproduire. –