使用TDD原则执行此操作的正确方法是什么?

时间:2010-06-29 14:59:02

标签: unit-testing tdd cross-platform

我是TDD的新手,我正在努力学习正确的做事方式。所以我必须为web浏览器扩展创建一个javascript类,将用户的信息存储到HTML5的localStorage(我将这个类称为UserInfoStorage)。但是,我希望我的扩展程序与浏览器兼容,并且与localStorage进行交互的方式在浏览器(Chrome,Firefox,Safari)中有所不同。

我是否应该创建另一个名为Storage的课程,该课程专门针对每个浏览器,并UserInfoStorage使用此课程将内容存储到localStorage?如果不将UserInfoStorage的测试与Storage的实施联系起来,我将如何对此进行单元测试?

谢谢!

2 个答案:

答案 0 :(得分:2)

一般而言,您可以模拟测试中的存储,以确保UserInfoStorage正确地与其进行交互。这些将包含(部分)您在UserInfoStorage上的单元测试。然后,您将为每个浏览器的每个存储实现进行单独的单元测试,理想情况下还会对代码进行测试,以确定根据所涉及的浏览器提供哪种存储实现。

答案 1 :(得分:0)

我意识到执行此操作的最佳方法是创建一个具有基本Storageget功能的测试set(有点像测试数据库),并且UserInfoStorage使用它来存储和检索数据。这允许直接测试UserInfoStorage的接口,而不将其绑定到Storage的实现,所以如果我改变UserInfoStorage的工作方式,测试仍然有效(因为它们是不测试UserInfoStorage是否正确地与Storage交互,而是UserInfoStorage的函数产生了预期的结果。