【发布时间】:2010-11-08 17:53:30
【问题描述】:
我正在使用 C#、NUnit 和 Rhino Mocks 编写单元测试。 以下是我正在测试的课程的相关部分:
public class ClassToBeTested
{
private IList<object> insertItems = new List<object>();
public bool OnSave(object entity, object id)
{
var auditable = entity as IAuditable;
if (auditable != null) insertItems.Add(entity);
return false;
}
}
我想在调用 OnSave 后测试 insertItems 中的值:
[Test]
public void OnSave_Adds_Object_To_InsertItems_Array()
{
Setup();
myClassToBeTested.OnSave(auditableObject, null);
// Check auditableObject has been added to insertItems array
}
这方面的最佳做法是什么?我考虑过将 insertItems 添加为具有公共 get 的属性,或者将 List 注入 ClassToBeTested,但不确定我是否应该修改代码以进行测试。
我已经阅读了很多关于测试私有方法和重构的帖子,但这是一个如此简单的类,我想知道最好的选择是什么。
【问题讨论】:
-
为什么 OnSave 总是返回 false? =/在.Add之后是否应该在“if(auditable!= null)”的条件内返回true?当然,它需要用括号括起来。
-
这个问题已经有将近 9 年的历史了,所以我不太记得了。有可能因为我使用的是 TDD,所以当我发布这个问题时,我还没有实现 OnSave 方法的返回逻辑。
标签: c# unit-testing nunit