可能是重复问题:
硬编码模拟对象 vs 模拟框架
我认为我终于开始理解单元测试的意图,但仍然难以实现所有细节。我得出结论,我可能需要一个“模拟”(我轻松使用此术语,因为我不确定是否需要像 Moq 这样的整个框架)对象来完成工作。
作为 Repository Pattern(或类似模式)实现的示例。据我目前的理解,我至少需要对每个 Add()
、Get()
和 Remove()
类方法进行测试。这很好,但是假设我想测试 Add()
方法如何处理 null
引用。在这种情况下,我是否只需在测试项目中定义一个简单的类,并将其实例设置为 null
,然后在适当的单元测试中使用?
示例单元测试(说明):
[TestMethod]
public void TestAdd_Null()
{
IRepository<MockObject> repository = (IRepository<MockObject>)(new Repository<MockObject>());
MockObject testObject = null;
repository.Add(testObject);
Assert.IsNotNull(repository.Entity);
}
// I'm thinking I should implement something like this exclusively within the Test project.
// Is this reasonable? Or should I be looking into something else?
internal class MockObject
{
public String Name { get; set; }
}
MockObject
的意图是表明我对模拟对象和预期使用的非常有限的理解。经过更多的研究,我开始觉得MockObject
应该改为StubObject
。我想我会等待并观察情况。 - Bradford Fisher