C# 如何告诉NBuilder在生成对象时拦截getter?
我有一个NBuilder代码:C# 如何告诉NBuilder在生成对象时拦截getter?,c#,nbuilder,C#,Nbuilder,我有一个NBuilder代码: var fakeReviews = Builder<Review> .CreateListOfSize(100) .Build() .ToList() .AsReadOnly(); 基本上,我认为NBuilder正在尝试评估所有属性,包括getter,但该用户属性不存在 即使我这样做: var fakeReviews = Builder<Review> .CreateListOfSize(100) .A
var fakeReviews = Builder<Review>
.CreateListOfSize(100)
.Build()
.ToList()
.AsReadOnly();
基本上,我认为NBuilder正在尝试评估所有属性,包括getter,但该用户属性不存在
即使我这样做:
var fakeReviews = Builder<Review>
.CreateListOfSize(100)
.All().With(x => x.User = Builder<User>.CreateNew().Build())
.Build()
.ToList()
.AsReadOnly();
它仍然是错误的
有什么方法可以让NBuilder截取该getter,或者如何在用户属性尝试求值之前设置它?因此可以防止错误。这并不理想,但我通过显式设置我不想要的属性值来解决这个问题 在您的情况下,这意味着要么根据您测试的内容返回真/假,要么抛出异常 所以基本上你可以做两种类似的方法:
public static Review BuildReviewByAdmin()
{
return Builder<Review>.CreateNew().With(x => x.WasWrittenByAdmin = true).Build();
}
public static Review BuildReviewByNonAdmin()
{
return Builder<Review>.CreateNew().With(x => x.WasWrittenByAdmin = false).Build();
}
然后你可以在特定的测试中使用你想要的
然而,若你们想测试获取的逻辑,我会用不同的方法
此外,还有一个NBuiler google代码问题涉及到这个问题:
这并不理想,但我通过显式设置我不想要的属性值来解决这个问题 在您的情况下,这意味着要么根据您测试的内容返回真/假,要么抛出异常 所以基本上你可以做两种类似的方法:
public static Review BuildReviewByAdmin()
{
return Builder<Review>.CreateNew().With(x => x.WasWrittenByAdmin = true).Build();
}
public static Review BuildReviewByNonAdmin()
{
return Builder<Review>.CreateNew().With(x => x.WasWrittenByAdmin = false).Build();
}
然后你可以在特定的测试中使用你想要的
然而,若你们想测试获取的逻辑,我会用不同的方法
此外,还有一个NBuiler google代码问题涉及到这个问题:
直到现在才听说过NBuilder,似乎很有趣……@BFree-假设你在单元测试中处理对象,那么如何处理它们?你有什么自定义工厂来创建你的对象吗?我通常有一些助手类来提供我需要的对象,我不确定我需要一个框架来解决这个问题,但NBuilder听起来确实不错。到目前为止,我从未听说过NBuilder,似乎很有趣…@BFree-如果你在单元测试中处理对象,那么假设你这样做了,你怎么处理它们?你有什么自定义工厂来创建你的对象吗?我通常有一些助手类来提供我需要的对象,我不确定我需要一个框架来解决这个问题,但是NBuilder听起来很不错。