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