AutoFixture无法创建CreateAnonymous MVC Controller

代码:

IFixture fixture = new Fixture().Customize(new AutoMoqCustomization()); fixture.Customize(c => c.Without(x => x.ModelMetadata)); var target = fixture.CreateAnonymous(); 

例外:

System.Reflection.TargetInvocationException:System.Reflection.TargetInvocationException:调用目标已抛出exception。 —> System.NotImplementedException:未实现方法或操作。

MyController()有3个参数。

我已经尝试了答案中描述的修复,但它不起作用。

看起来 ,在使用MVC 4时,您必须以不同的方式自定义Fixture实例。

如果您更换 ,测试应该通过:

 fixture.Customize(c => c .Without(x => x.ModelMetadata)); 

 fixture.Customize(c => c .Without(x => x.DisplayMode)); 

(可选)您可以创建所需自定义的组合 :

 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)); } } } 

然后,原始测试可以重写为:

 [Fact] public void Test() { var fixture = new Fixture() .Customize(new WebModelCustomization()); var sut = fixture.CreateAnonymous(); Assert.IsAssignableFrom(sut); }