代码之家  ›  专栏  ›  技术社区  ›  koen

BDD/TDD:依赖关系可以是一种行为吗?

  •  2
  • koen  · 技术社区  · 15 年前

    示例:链接列表依赖于存储引擎来存储其链接(例如LinkStorageInterface)。构造函数需要被传递一个已实现的LinkStorageInterface实例才能完成其工作。

    在这种情况下,“测试”什么是正确的?我应该测试它是否在商店中存储链接(行为),还是根本不测试?

    2 回复  |  直到 15 年前
        1
  •  4
  •   Josh    15 年前

    稍微扩展一下您的示例,让我们假设我们的LinkStorageInterface具有以下定义(伪代码):

    Interface LinkStorageInterface
    
      void WriteListToPersistentMedium(LinkList list)
    
    End Interface
    

    WriteListToPersistentMedium() Save() 你的方法 LinkList

    测试可能是这样的,同样使用伪代码:

    void ShouldSaveLinkListToPersistentMedium()
    
      define da = new MockLinkListStorage()  
      define list = new LinkList(da)
    
      list.Save()
    
      Assert.Method(da.WriteListToPersistentMedium).WasCalledWith(list)
    
    end method
    

    1. 将方法或属性设置为公共以便可以检查
    2. 任何不直接涉及您正在测试的预期行为的内容

        2
  •  1
  •   Carl Manaster    15 年前

    LinkStorageInterface不是一个实现细节——它的名字暗示了一个引擎接口。在这种情况下,名称 价值大于 是否应在存储中存储链接 .