【发布时间】:2014-08-01 09:59:32
【问题描述】:
寻找有关测试的一些说明。我的服务层中有以下方法:
readonly IDomainModelRepository domainModelRepository;
public DomainModelDetailsDto Edit(int DomainModelID, IPrincipal User)
{
DomainModel myDomainModel = domainModelRepository.Find(DomainModelID);
if ((myDomainModel == null) || (!myDomainModel.UserCanEdit(User)))
throw new UnauthorisedException();
// Other stuff here...
}
现在我正在构建一套测试,但遇到了一些障碍。
- 不能模拟对
myDomainModel.UserCanEdit(User)的调用,因为 DomainModel 没有实现任何接口。它变得更加复杂,因为 UserCanEdit 中包含的逻辑实际上会检查其图表中其他域模型上的字段。那么如何轻松设置它以返回设置值以允许我测试服务? - 我正在测试如果 repo 没有找到 DomainModel 项,该方法是否正确响应。然后,如果用户无法编辑,我会测试它是否正确响应(当我解决上面的第 1 点时我会这样做!)。但在那之后,我为“这里的其他东西”编写的每个测试都要求我正确设置测试以通过前两项检查。这看起来很麻烦,并且使每个测试都重复相同的代码。有没有更好的方法?
也许问题在于我的代码本身需要重构,以便于测试。如果是这样,所有建议表示赞赏!
【问题讨论】:
标签: c# unit-testing testing mocking