Le code:
IFixture fixture = new Fixture().Customize(new AutoMoqCustomization()); fixture.Customize(c => c.Without(x => x.ModelMetadata)); var target = fixture.CreateAnonymous();
l’éxéption:
System.Reflection.TargetInvocationException: System.Reflection.TargetInvocationException: une exception a été levée par la cible d’un appel. —> System.NotImplementedException: la méthode ou l’opération n’est pas implémentée.
MyController()
prend 3 parameters.
J’ai essayé le correctif décrit dans la réponse , mais cela ne fonctionnerait pas.
Comme il semble , lorsque vous utilisez MVC 4, vous devez personnaliser l’instance de Fixture
d’une manière différente.
Le test devrait réussir si vous remplacez :
fixture.Customize(c => c .Without(x => x.ModelMetadata));
avec :
fixture.Customize(c => c .Without(x => x.DisplayMode));
Vous pouvez éventuellement créer un composite des personnalisations requirejses:
internal class WebModelCustomization : CompositeCustomization { internal WebModelCustomization() : base( new MvcCustomization(), new AutoMoqCustomization()) { } private class MvcCustomization : ICustomization { public void Customize(IFixture fixture) { fixture.Customize(c => c .Without(x => x.DisplayMode)); } } }
Ensuite, le test original pourrait être réécrit comme suit:
[Fact] public void Test() { var fixture = new Fixture() .Customize(new WebModelCustomization()); var sut = fixture.CreateAnonymous(); Assert.IsAssignableFrom(sut); }