Unit testing 使用TDD原则的正确方法是什么?

Unit testing 使用TDD原则的正确方法是什么?,unit-testing,tdd,cross-platform,Unit Testing,Tdd,Cross Platform,我是TDD的新手,我正在努力学习正确的做事方式。因此,我必须为web浏览器扩展创建一个javascript类,该类将用户信息存储到HTML5的localStorage(我将该类称为UserInfoStorage)。但是,我想使我的扩展跨浏览器兼容,并且与localStorage交互的方式在不同的浏览器(Chrome、Firefox、Safari)中是不同的 我是否应该为每个浏览器创建另一个名为Storage的类,并让UserInfoStorage使用该类将内容存储到localStorage?如果

我是TDD的新手,我正在努力学习正确的做事方式。因此,我必须为web浏览器扩展创建一个javascript类,该类将用户信息存储到HTML5的
localStorage
(我将该类称为
UserInfoStorage
)。但是,我想使我的扩展跨浏览器兼容,并且与
localStorage
交互的方式在不同的浏览器(Chrome、Firefox、Safari)中是不同的

我是否应该为每个浏览器创建另一个名为
Storage
的类,并让
UserInfoStorage
使用该类将内容存储到
localStorage
?如果不将
UserInfoStorage
的测试与
Storage
的实现捆绑在一起,我如何进行单元测试


谢谢

一般来说,您将模拟测试中的存储,以确保UserInfoStorage与之正确交互。这些将包括(部分)对UserInfoStorage的单元测试。然后,您将对每个浏览器的每个存储实现进行单独的单元测试,理想情况下,还可以对代码进行测试,以根据所涉及的浏览器确定要提供的存储实现。

我意识到最好的方法是创建一个测试
存储
,它具有基本的
get
set
功能(有点像测试数据库),并让
UserInfoStorage
使用它来存储和检索数据。这允许直接测试
UserInfoStorage
的接口,而无需将其与
Storage
的实现绑定,因此如果我更改
UserInfoStorage
的工作方式,测试仍然有效(因为他们没有测试
UserInfoStorage
是否正确地与
Storage
交互,而是测试
UserInfoStorage
的功能是否产生所需的结果)