在我的程序中,我的情况可以简化为以下内容:
我创建了一个Mapper接收MemoryRepository的测试。 通过在将在业务逻辑中使用的内存存储库中显式设置属性,我现在可以测试此逻辑。 但是,如果我使用注入,我将无法访问此存储库。
一些代码告诉你超过1000个普通单词here is the pastebin link。
你会怎么做?
答案 0 :(得分:1)
不完全确定你在这里问的是,你在测试映射器还是存储库?如果您正在测试映射器,那么伪造存储库。你已经有了接缝,要么在你的测试中使用一个框架或者手动创建一个虚假的存储库,为了测试Mapper而产生你想要的任何快乐噪声,并通过将你的虚假传入构造函数来创建映射器。 / p>
所以通过自己的简化,
如果您需要验证存储库中的某些信息,请使用模拟而不是存根。
答案 1 :(得分:1)
如果我理解你的问题,基本上你担心你的存储库是在实例化测试类时创建和注入的,所以在你的测试方法中,你不能修改存储库的状态,因为它已经在你的映射器中,并且当然,您的映射器不应该暴露存储库的内部。
如果是这种情况,那么我认为你不必担心,只需修改myMemoryCategoryRepository的状态并执行mapper的方法。您的映射器应该相应地运行,因为您注入的是对存储库的引用,因此映射器内的对象与您要修改的对象相同。
Dim myMemoryCategoryRepository As MemoryCategoryRepository = MemoryKernel.Instance.Get(Of MemoryCategoryRepository)()
Dim myCategoryMapper As CategoryMapper = New CategoryMapper(myMemoryCategoryRepository)
<TestMethod()> _
Public Sub GetCategoryStartDate_CategoryStartDateAndContractStartDate_ContractStartDateIsOldestDate()
myMemoryCategoryRepository.AnyFlag = True
myCategoryMapper.Execute()
Assert.AreEqual(expectedValue, myCategoryMapper.Value)
End Sub