2011-03-05 91 views
10

目前我正在为web服务开发一个JS库,您可以将它与Twitter Anywhere进行比较。现在我想让它更加以测试为导向。 测试起来并不容易,因为它必须在每个想要使用它的站点上运行,当然也适用于每个浏览器。JavaScript库的测试驱动开发

如何有效地测试库?

所有的API请求和响应都使用JSON,有没有一种很好的方法来测试这些调用?

我了解Cucumber和js-test-driver。

问候, Chielus

+1

你有没有看过Jasmine(http://pivotal.github.com/jasmine/)呢? – polarblau 2011-03-05 15:45:48

+0

我不认为我可以做BDD,因为它是一个必须与各种网站一起工作的图书馆。 – Chielus 2011-03-07 08:44:39

回答

5

Javascript语言的本质上是动态的,所以它是真正的测试驱动的友好。我最近在javascript测试方面有了一点经验。我使用TDD重写了主要的javascript组件,并获得了清晰的代码和更紧凑的代码!

  1. 单元测试框架的选择是qUnit。从测试开始非常容易。
  2. 选择功能测试框架是funcunit

我做了一个FuncUnit here测试REST API的博客文章。

如果你需要一些测试和实现的例子,你可以检查我的github repository

不要问任何问题,刚开始测试:)

+0

感谢您的博客文章,非常有趣的看到一个例子(这是非常接近我的用例!) – Chielus 2011-03-06 10:33:54

+0

@Chielus - 欢迎! – 2011-03-07 07:01:43

2

如果你知道jsTestDriver我想你已经找到一个好的解决办法?

您可以使用它在多个浏览器中自动启动测试并返回成功或失败。

这使它与其他使用无头浏览器的工具分开,就像jsTestDriver在真实浏览器中运行测试一样,这似乎满足您的要求。

jsTestDriver带有自己有限的断言框架,但你可以插入其他人,包括QUnit,YUI和Jasmine。

你在上面说到Jasmine时说:“我不认为我能做BDD,因为它是一个必须与各种网站一起工作的图书馆。”我不确定你的意思是什么?

茉莉花提供所有的断言,让你做和QUnit一样的测试。它还可以让你'侦察'Ajax回调,拦截JSON来检查甚至改变它,然后将它传递给你的默认回调。有了这个,你可以检查JSON响应,然后再次检查你的用户界面是否以正确的方式做出反应。