【发布时间】:2012-06-21 02:28:17
【问题描述】:
我有这个 NBuilder 代码:
var fakeReviews = Builder<Review>
.CreateListOfSize(100)
.Build()
.ToList()
.AsReadOnly();
非常简单。
但在此属性的评论中出现错误:
public bool WasWrittenByAdmin
{
get
{
if (User == null) throw new InvalidOperationException("Must load User.");
return User.UserSettings != null && User.UserSettings.IsAdmin;
}
}
基本上,我认为 NBuilder 正在尝试评估所有属性,包括 getter,但该 User 属性不存在。
即使我这样做:
var fakeReviews = Builder<Review>
.CreateListOfSize(100)
.All().With(x => x.User = Builder<User>.CreateNew().Build())
.Build()
.ToList()
.AsReadOnly();
仍然出错。
有什么方法可以告诉 NBuilder 拦截该 getter,或者在它尝试评估它之前如何设置 User 属性? (从而防止错误)。
【问题讨论】:
-
直到现在还没有听说过 NBuilder,看起来很有趣....
-
@BFree - 那么你如何在你的单元测试中处理对象(假设你这样做了)?你有某种自定义工厂来创建你的对象吗?
-
我通常有一些帮助类来提供我需要的对象,不确定我是否需要一个框架来解决这个问题,但 NBuilder 听起来确实很整洁。