C# 使用AutoFixture创建谓词表达式
我试图用AutoFixture以以下方式生成C# 使用AutoFixture创建谓词表达式,c#,.net,predicate,autofixture,C#,.net,Predicate,Autofixture,我试图用AutoFixture以以下方式生成表达式: var fixture = new Fixture(); var predicateExpr = _fixture.Create<Expression<Predicate<string>>>(); // exception 现在,当我运行类似的东西时,但是用Predicate替换为Func时,代码运行得很好 var func = _fixture.Create<Expression<Func&
表达式
:
var fixture = new Fixture();
var predicateExpr = _fixture.Create<Expression<Predicate<string>>>(); // exception
现在,当我运行类似的东西时,但是用Predicate
替换为Func
时,代码运行得很好
var func = _fixture.Create<Expression<Func<string, bool>>>(); // no exception
var func=_fixture.Create();//也不例外
另外,如果我尝试创建谓词
(而不是表达式
),一切都很好
var谓词=_fixture.Create();//也不例外
我做错了什么?有没有一种方法可以使用AutoFixture创建谓词表达式?它看起来像是一个bug或不受支持的用例。您可以通过夹具自定义来解决此问题:
public class PredicateCustomization : ICustomization
{
public void Customize(IFixture fixture)
{
fixture.Register(() => (Expression<Predicate<string>>) (s => true));
}
}
=====
var fixture = new Fixture();
fixture.Customize(new PredicateCustomization());
var predicateExpr = fixture.Create<Expression<Predicate<string>>>();
公共类谓词自定义:ICustomization
{
公共空间自定义(iTexture装置)
{
寄存器(()=>(表达式)(s=>true));
}
}
=====
var fixture=新fixture();
fixture.Customize(new predictecustomization());
var predicateExpr=fixture.Create();
如果没有AutoFixture,您将如何创建它?
var predicate = _fixture.Create<Predicate<string>>(); // no exception
public class PredicateCustomization : ICustomization
{
public void Customize(IFixture fixture)
{
fixture.Register(() => (Expression<Predicate<string>>) (s => true));
}
}
=====
var fixture = new Fixture();
fixture.Customize(new PredicateCustomization());
var predicateExpr = fixture.Create<Expression<Predicate<string>>>();