【问题标题】:Testing User Interaction with JavaScript使用 JavaScript 测试用户交互
【发布时间】:2011-10-28 18:34:16
【问题描述】:

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

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

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

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

我真的希望避免直接使用 Selenium,并认为这些工具使这变得不必要。那么现在呢?

【问题讨论】:

  • 您还在寻找答案吗?我不想复活僵尸。

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


【解决方案1】:

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

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

【讨论】:

  • 谢谢,但我并不完全遵循。您是否建议我使用 jQuery 获取对目标元素的引用,然后对其调用 click() ?或者我对 jQuery Event 模型进行了一些更复杂的使用来调用事件?对于后者,我将不得不复习 jQuery。是的,click() 的行为不像我预期的那样。
  • 你想到 jquery.simulate.js 库,w/jQuery 和 QUnit 吗?因为我确实让它起作用了。
猜你喜欢
  • 1970-01-01
  • 2013-02-18
  • 1970-01-01
  • 1970-01-01
  • 2013-06-11
  • 2017-05-13
  • 2022-01-19
  • 2011-03-11
  • 2014-11-25
相关资源
最近更新 更多