【问题标题】:How does one properly test a javascript widget?如何正确测试 javascript 小部件?
【发布时间】:2010-08-05 17:53:08
【问题描述】:

所以,我编写了一个小的 javascript 小部件。用户所要做的就是将脚本标签粘贴到页面中,然后在它的正下方插入一个包含用户请求的所有内容的 div。

许多网站都做类似的事情,例如 Twitter、Delicious 甚至 StackOverflow。

我很好奇的是如何测试这个小部件以确保它可以在每个人的网页上正常工作。我没有使用 iframe,所以我真的想确保此代码在插入大多数位置时都能正常工作。我知道它在所有浏览器中看起来都一样。

建议?或者我应该只构建一百个网页并插入我的脚本标签,看看它是否有效?我希望有比这更简单的方法。

【问题讨论】:

    标签: javascript testing


    【解决方案1】:

    一旦您确认您的 javascript 在受控环境中可以跨浏览器工作,以下是在实际网站上使用时可能会导致问题的一些事项:

    CSS

    • 您使用的 CSS 类已被目标网站(用于不同目的)使用
    • 您使用的定位可能会干扰网站的 CSS
    • 您正在使用的元素由网站的 CSS 设置样式(您可能希望使用某种仅适用于您的小部件的 "reset" CSS)

    HTML

    • 您正在创建的元素与网站上已存在的元素具有相同的 id 属性
    • 您指定的 name 属性已被使用(虽然 name 可用于多个元素,但您可能没想到会这样)

    Javascript

    • 没有启用 Javascript 的预期行为是什么?如果您的脚本创建了所有内容,那么没有 JS 就没有任何内容可以接受吗?

    【讨论】:

    • 酷,我已经想到了其中的大部分。我很好奇是否真的有任何方法可以测试我没有在各种用例中破坏任何这些东西。听起来我可能只需要做我最初担心的事情。
    • 我不知道有什么绝对的方法可以测试您的小部件是否适用于 100% 的网站,因为您根本无法保证网站会是什么样子。您能做的最好的事情就是尝试使用您认为可能会破坏它的网站/代码并更新您的小部件以与它们一起使用。
    【解决方案2】:

    在最基本的情况下,您应该确保您的小部件适用于以下测试用例。我相信它会在所有网页上运行 -

    • http/https:对于未加密内容的 HTTPS 页面,不应有任何警告。
    • :如果 JavaScript 被禁用了怎么办?您的小部件是否仍然可见?
    • 第三方 cookie 被禁用时会发生什么?你的小部件还能用吗?
    • 布局框限制:当父 div 元素的大小小于您的小部件时。您的小部件是否会溢出给定的大小并破坏所有者页面?

    【讨论】:

      【解决方案3】:

      通过将所有 Javascript 保存在具有 very 唯一名称的命名空间(全局对象)下,您应该就可以了。此外,如果您只想打印一些东西,您可以简单地使用匿名函数。

      类似问题:How to avoid name clashes in JavaScript widgets

      【讨论】:

      • 我更担心 CSS 和我注入的 HTML 不起作用,而不是命名空间冲突,但感谢您的链接。
      猜你喜欢
      • 1970-01-01
      • 2019-10-31
      • 2015-05-22
      • 2017-12-04
      • 2021-09-17
      • 2022-12-13
      • 2022-07-01
      • 1970-01-01
      相关资源
      最近更新 更多