我是TDD的新手,我正在努力学习正确的做事方式。所以我必须为web浏览器扩展创建一个javascript类,将用户的信息存储到HTML5的localStorage
(我将这个类称为UserInfoStorage
)。但是,我希望我的扩展程序与浏览器兼容,并且与localStorage
进行交互的方式在浏览器(Chrome,Firefox,Safari)中有所不同。
我是否应该创建另一个名为Storage
的课程,该课程专门针对每个浏览器,并UserInfoStorage
使用此课程将内容存储到localStorage
?如果不将UserInfoStorage
的测试与Storage
的实施联系起来,我将如何对此进行单元测试?
谢谢!
答案 0 :(得分:2)
一般而言,您可以模拟测试中的存储,以确保UserInfoStorage正确地与其进行交互。这些将包含(部分)您在UserInfoStorage上的单元测试。然后,您将为每个浏览器的每个存储实现进行单独的单元测试,理想情况下还会对代码进行测试,以确定根据所涉及的浏览器提供哪种存储实现。
答案 1 :(得分:0)
我意识到执行此操作的最佳方法是创建一个具有基本Storage
和get
功能的测试set
(有点像测试数据库),并且UserInfoStorage
使用它来存储和检索数据。这允许直接测试UserInfoStorage
的接口,而不将其绑定到Storage
的实现,所以如果我改变UserInfoStorage
的工作方式,测试仍然有效(因为它们是不测试UserInfoStorage
是否正确地与Storage
交互,而是UserInfoStorage
的函数产生了预期的结果。