1

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

JsTestDriver:我可以获得对按钮元素的引用并调用click()它,但随后document.getElementsByTagName("li")失败(或返回 null?)。

Johansen 的优秀著作说,测试事件处理程序并不是一个正确的单元测试任务。所以我为 Django 尝试了我的 BDD (?) 工具:

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

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

4

1 回答 1

1

虽然触发 DOM 事件在技术上可能不是“单元测试”,但这并不意味着您不能使用单元测试框架来执行它:) 这更多的是定义的情况。

无论如何,您可以使用例如 JsTestDriver 实现您想要的,但我建议您不要通过 eg 手动执行它click()(这可能不会达到您的预期)。我通常使用 jQuery 来触发事件,这可以通过例如 JsTestDriver 安全地完成。即使您不在生产代码中使用 jQuery,这也应该有效。

于 2011-10-31T18:17:10.337 回答