自动混合定制:提供构造函数参数
我有以下课程:
class Foo { public Foo(string str, int i, bool b, DateTime d, string str2) { ..... } }
我正在使用AutoFixture创建一个Foo
:
var foo = fixture.Create();
但我希望AutoFixture为str2
参数提供已知值,并对每个其他参数使用默认行为。
我尝试实现一个SpecimenBuilder
但我找不到一种方法来获取与请求相关联的元数据,以便知道我是从Foo构造函数调用的。
有没有办法实现这个目标?
在这里回答你可以有类似的东西
public class FooArg : ISpecimenBuilder { private readonly string value; public FooArg(string value) { this.value = value; } public object Create(object request, ISpecimenContext context) { var pi = request as ParameterInfo; if (pi == null) return new NoSpecimen(request); if (pi.Member.DeclaringType != typeof(Foo) || pi.ParameterType != typeof(string) || pi.Name != "str2") return new NoSpecimen(request); return value; } }
然后你可以像这样注册它
var fixture = new Fixture(); fixture.Customizations.Add(new FooArg(knownValue)); var sut = fixture.Create();
- 如何指示AutoFixture不打扰填写某些属性?
- 需要为ApiControllers创建约定
- 如何使用AutoFixture实现日期限制?
- 使用AutoMoq创建控制器时,Fixture.CreateAnonymous方法使用错误(AutoFixture)杀死测试运行程序进程
- AutoFixture – 如何调用方法,如何设置autoproperty的私有setter?
- AutoFixture:配置Open Generics Specimen Builder
- AutoFixture.AutoMoq为一个构造函数参数提供已知值
- 使用CreateMany()AutoFixture IEnumerable 行为
- AutoFixture:PropertyData和异构参数