使用JavaScript测试用户交互

时间:2011-10-28 18:34:17

标签: javascript testing bdd lettuce js-test-driver

我无法让Lettuce / Splinter或JsTestDriver运行与Backbone生成的DOM对象的用户交互测试。例如,在hello backbone tutorial,我想模拟用户点击标有“添加列表项”的按钮,然后验证文本“hello world1”的<li>元素是否已出现。

JsTestDriver:我可以获取对button元素的引用并在其上调用click(),但然后document.getElementsByTagName("li")失败(或返回null?)。

约翰森出色的book说测试事件处理程序不适合单元测试任务。所以我尝试了Django的BDD(?)工具:

Lettuce / Splinter / Django: Splinter Browswer对象无法看到按钮中的文本,更别提获取对它的引用或单击它。 (它确实为通过HTML创建的元素处理这些操作。)world.browser.is_text_present()和find_by_id()都不起作用;将等待时间传递给前者并没有帮助。

我真的更愿意避免直接去Selenium,并认为这些工具使得不必要。那么现在呢?

1 个答案:

答案 0 :(得分:1)

虽然触发DOM事件在技术上可能不是“单元测试”,但这并不意味着你不能使用单元测试框架来做到这一点:)这更像是一个定义的例子。

无论如何,你可以实现你想要的东西,例如: JsTestDriver,但我建议不要手动通过例如click()(这可能不符合您的预期)。我通常使用jQuery来触发事件,这可以安全地用例如JsTestDriver。即使您不在生产代码中使用jQuery,这也应该有效。