我很好奇是否有价值,我想开始使用QUnit,但我真的不知道从哪里开始。实际上,我不会撒谎,我对测试还是很新的,不仅限于JS。
我希望能获得一些提示,如何在已经有大量JavaScript(大约500行,并不算太多,但足以让我想知道是否存在未被发现的回归)的应用中开始使用单元测试。您会建议从哪里开始,我该在哪里编写我的测试?
(例如它是Rails应用程序,哪里是放置JS测试的逻辑位置,如果它们可以放在/test
目录中,那将是很不错的,但它位于公共目录之外,因此似乎不可能...嗯,是吗?)
我很好奇是否有价值,我想开始使用QUnit,但我真的不知道从哪里开始。实际上,我不会撒谎,我对测试还是很新的,不仅限于JS。
我希望能获得一些提示,如何在已经有大量JavaScript(大约500行,并不算太多,但足以让我想知道是否存在未被发现的回归)的应用中开始使用单元测试。您会建议从哪里开始,我该在哪里编写我的测试?
(例如它是Rails应用程序,哪里是放置JS测试的逻辑位置,如果它们可以放在/test
目录中,那将是很不错的,但它位于公共目录之外,因此似乎不可能...嗯,是吗?)
好的,先从JsUnit开始。但听起来您更关心单元测试。
如果单元测试做得正确,您可以获得以下好处:
单元测试应基本涉及代码中的任何公共方法。有时您可能需要测试私有方法,我相信您可以决定何时进行测试。目标很简单:
在许多方面,您的测试应定义方法的功能。
有时人们编写单元测试时,有意“stub out”任何集成代码(即从数据库、文件或业务逻辑返回其他数据的方法调用)并使其返回静态数据。这可帮助您更有信心地仅测试逻辑中存在的代码。
您可能想要阅读更多有关良好和不良单元测试实践的信息。
编辑:我对在Ruby on Rails中执行此操作的方法不太了解,但您可以考虑查看其他人正在进行的工作。最终,可用工具和测试结构 将 取决于您的框架和语言。
使用Rails时,我建议使用 Blue Ridge。它是ScrewUnit、一些rake任务的打包,以及通过Rhino运行浏览器外测试的能力。我们有相当多的Javascript测试。这些测试更类似于RSpec而不是其他提到的工具,因此对思维方式的转换较小...效果非常好!
要开始,请最好在网络上寻找其他成功案例。在Github上有一些例子。
直接测试JavaScript并不容易(因为它需要一个“外部”解释器,在生产环境中是浏览器)。因此,很难将其包含在您的持续集成环境中。
因此,由于JavaScript单元测试需要很高的工作量,我倾向于在集成测试中更加粗略地测试。例如:canoo-webtest包含一个JavaScript解释器。您可以模拟用户操作(例如点击按钮),然后触发JavaScript。因此,您进行间接测试。
但仍有一些与UI相关的JavaScript内容(例如淡入效果等)。这需要手动测试。