gpt4 book ai didi

javascript - Ajax 驱动的 JavaScript 运行时断言框架

转载 作者:可可西里 更新时间:2023-11-01 02:27:34 26 4
gpt4 key购买 nike

在使用越来越多的 JavaScript 代码开发更大的 Web 应用程序时,我们就如何提高代码质量进行了头脑 Storm session 。

第一个想法是引入单元测试。这将是一个长期目标;但是,这不会解决最常见的回归原因:不断变化的 DOM 和浏览器特定问题。

单元测试在模拟的、无 DOM 的环境中运行,并且不在页面上。

我正在寻找的是一个断言框架,它可以像这样插入到代码中:

var $div = $("div.fooBarClass");
assertNotEmpty($div);
$div.fooBarAction();

我发现断言框架可以做到这一点,但它们要么登录到控制台或 DOM,要么打开一个愚蠢的弹出窗口。这些都不能与(数千个)自动化测试一起工作。我正在寻找的是一个运行时断言框架,它通过 AJAX 记录失败的断言!理想情况下,它应该是:

  • 内置通用断言。
  • 与 JQuery 模块、闭包集成。
  • 记录(通过 Ajax)断言、文件名、页面、line number ,失败的原因,环境的一些预配置变量(浏览器,发布版本等)。
  • 支持失败时的回调。 (如果有任何断言框架可以做到这一点,我很乐意编写回调来完成 Ajax 部分。)
  • 适用于所有浏览器。
  • 从产品发布中排除是微不足道的。
  • 维护代码库。

最佳答案

我们一直在使用 YUI Test Library .它似乎工作得相当好。

针对不同类型有多种断言方式

断言存在于相等、相同、真、假、对象类型,甚至数组项比较。

允许模拟对象测试 DOM 对象和其他功能我们的代码进行了大量的 AJAX 调用,或者需要不需要测试的方法/对象(因为它们在别处进行了测试)。使用 Mock 对象,我们可以告诉测试期望什么。例如:

var mockXhr = Y.Mock();

//I expect the open() method to be called with the given arguments
Y.Mock.expect(mockXhr, {
method: "open",
args: ["get", "/log.php?msg=hi", true]
});

适用于所有浏览器

我们在 IE、Chrome 和 Firefox 中运行我们的测试,除了测试运行器本身看起来有些不同之外,它是有效的!

从产品发布中排除很简单

我们将所有测试代码放在一个单独的文件夹中,该文件夹可访问所有生产代码。从生产中排除测试就像排除文件夹一样简单。

维护的代码库

在 Yahoo 主页上使用 YUI 3,并且似乎维护得相当好。

关于javascript - Ajax 驱动的 JavaScript 运行时断言框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5003911/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com