【发布时间】:2020-11-24 07:04:09
【问题描述】:
我目前有一个名为 ExampleViewModelAttribute 的类,它从 TestViewModelDataAttribute 派生而来,TestViewModelDataAttribute 是从 AutoDataAttribute 类派生的类。
public class TestViewModelDataAttribute : AutoDataAttribute
{
public TestViewModelDataAttribute()
: this(new Fixture())
{
}
public TestViewModelDataAttribute(IFixture fixture)
: base(fixture)
{
Fixture.Customize(new ViewModelsCustomization());
Fixture.Inject(Fixture);
}
}
public class ExampleViewModelAutoDataAttribute : TestViewModelAutoDataAttribute
{
public ExampleViewModelAutoDataAttribute()
{
var someExampleMock = Fixture.Create<Mock<ISomeExampleMock>>();
Fixture.Inject(someExampleMock);
}
}
我的问题,是我不断收到警告“为了提高性能效率而延迟创建了夹具,因此不推荐使用此属性,因为它会立即激活夹具。” + “如果您需要自定义夹具,请在传递给构造函数的工厂方法中进行。”
如何解决此警告?我想在夹具中注入模拟类,我只有一个答案可以帮助我修复基类警告,但我还需要修复注入模拟类。
修复基类
public class TestViewModelDataAttribute : AutoDataAttribute
{
public TestViewModelDataAttribute() : base(() =>
{
var fixture = new Fixture().Customize(new CompositeCustomization(
new AutoMoqCustomization(),
new SupportMutableValueTypesCustomization()));
return fixture;
})
{
}
}
但是由于我在派生类中使用了 Fixture 的属性,所以我仍然会出错。我应该如何解决这个问题? 谢谢
【问题讨论】:
标签: xunit.net autofixture