对于一个项目,我有一系列创建XML伪库的(它们不是真正的仓库,但填补了同样的作用,所以我再也忍受不了了命名)通过调用一些返回的XML存储的特效。为了我的项目,我还有“映射器”(它们不是true映射器......)将XML作为输入并使用Linq将原始XML转换为DTO。我应该如何测试返回XML的“存储库”?
由于我有映射器,在我看来,“存储库”不应该测试返回的值(因为这是映射器的工作;存储库只关心它返回了一些XML,无论是否XML数据是正确的)。但是,这会导致测试从字面上确保“存储库”的返回值不为null。
基本上每一个仓库实现了一种称为GetXml
一个方法,它返回一个XML文档的接口。实际的实现是数据库调用,但为了测试,我有一个非常基本的模拟类,它只返回一个空白的XML文档。最终,我需要使用一些硬编码的值来构建一个实际的XML文件,但是这个“确定”的版本库测试基本上是单行的:Assert.IsNotNull(repository.GetXml(), "Xml response was null");
这是甚至应该测试的东西,还是有没有更好的方法来测试这个没有踩在映射器的脚趾?我想从设计的角度来看,我可以完全移除映射器,只需让存储库自己完成映射(或者使映射器在存储库内部)。我没有做TDD,因为我实际上已经编写了代码,但是我想创建测试,因此测试更容易,所以我可以向我的同事展示测试的好处(我们目前不使用类型的自动化测试)。
我想我要问的是这样的:它是好写一个测试,只有表达了有意设计的人谁可以使用代码,而无需实际关心的返回值?眼下这就是这些测试做的:他们说,在代码中,“我应该能够创建一个XmlXXXRepository
类,实现了一个名为IXmlRepository
的接口,需要较长呼吁建设quoteID
,并有一个名为GetXml()
方法返回一个XmlDocument对象“就是这样。