C# 如何告诉NBuilder在生成对象时拦截getter?

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

我有一个NBuilder代码:

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听起来很不错。