jqgrid的Qunit测试用例

jqgrid的Qunit测试用例,jqgrid,qunit,Jqgrid,Qunit,许多函数都是使用jqgrid编写的。所以我计划用Qunit编写测试用例 但对于如何使用Qunit为jqgrid编写TC还不熟悉。我在谷歌上搜索了一些例子。但我没有找到 如果有人编写了一些测试用例,请分享一个示例。我必须从以下几句话开始:我不擅长。然而,因为我看到没有其他人给你写过答案,所以我决定写我的答案 最大的问题是如何使用单元测试。我认识很多人,他们试图制定一些“最佳实践规则”,并在那里保持非常奇怪的状态。有很多科目,比如“如何分组组织考试”等等。我是实用主义者。所以我认为最重要的是制定单元

许多函数都是使用jqgrid编写的。所以我计划用Qunit编写测试用例

但对于如何使用Qunit为jqgrid编写TC还不熟悉。我在谷歌上搜索了一些例子。但我没有找到


如果有人编写了一些测试用例,请分享一个示例。

我必须从以下几句话开始:我不擅长。然而,因为我看到没有其他人给你写过答案,所以我决定写我的答案

最大的问题是如何使用单元测试。我认识很多人,他们试图制定一些“最佳实践规则”,并在那里保持非常奇怪的状态。有很多科目,比如“如何分组组织考试”等等。我是实用主义者。所以我认为最重要的是制定单元测试的主要目标。如果达到了主要目标,那么我已经很满意了。所以我只创建了一些基础测试来演示您可以做什么以及QUnit如何帮助我们

显示了jqGrid的用法QUnit示例。重要的是要了解,每个测试都必须自己实施,而QUnit在这方面帮不了我们。因此,如果您想验证初始空
是否成功转换为jqGrid,我们必须知道什么是jqGrid以及如何测试功能

例如,在创建jqGrid的过程中,许多外部div将在主
上创建。网格的所有元素都将位于
的内部。为了验证这一点,我们可以使用这样简单的测试

QUnit.test(“gbox存在”,函数(断言){
var$grid=$(“#grid”);
assert.equal($grid.nexist(.ui jqgrid)).length,1,“Passed!”;
});
该测试验证
$(“#网格”).closest(“.ui jqgrid”).length
是否等于
1

还有一个常见的测试。每个内部jqGrid方法都通过主
的DOM元素的
grid
expando的存在来测试它是否会应用于jqGrid。请参见
getCell
方法的代码示例。因此,可以通过以下测试执行相同的操作:

QUnit.test(“网格扩展存在”),函数(断言){
var$grid=$(“#grid”);
assert.notEqual($grid[0].grid,未定义,“Passed!”);
});
因此,我们必须确切地知道您需要测试什么以及如何测试。QUnit只能帮助我们显示测试结果

我在演示中包括了两个失败的“伪”测试。第一个测试如下。我最近发布了免费jqGrid 4.8的新版本。您可能知道,jqGrid的开发者Tony在发布jqGrid 4.7后更改了jqGrid的许可协议。所以JQGrid4.7是麻省理工学院许可证下“原始jqGrid”的最后一个版本。在那之后,我开始了我自己的jqGrid分支,名为“FreeJQGrid”
,包括许多功能并修复了许多bug。作为新特性之一,我改变了导航栏的结构。我在中详细描述了这些变化。简单地说,导航栏现在是
,而不是以前使用的
。因此,测试通过了免费jqGrid(在我的jqGrid分支上),但在jqGrid 4.7上失败了

QUnit.test(“导航条是DIV”,函数(断言){
var$grid=$(“#grid”),pagerIdSelector=$grid.jqGrid(“getGridParam”,“pager”);
assert.equal($(pagerIdSelector).find(“.navtable”)[0].nodeName.toUpperCase(),“DIV”,“Passed!”);
});
同时,下一个测试在免费jqGrid上失败,但在原始jqGrid上通过:

QUnit.test(“导航栏是表”,函数(断言){
var$grid=$(“#grid”),pagerIdSelector=$grid.jqGrid(“getGridParam”,“pager”);
assert.equal($(pagerIdSelector).find(“.navtable”)[0].nodeName.toUpperCase(),“TABLE”,“Passed!”);
});
测试结果如下所示:

所以QUnit帮助我们以更可读的形式显示结果

下面是我在演示中包含的另一个“伪失败”测试。我阅读了关于
getRowData
的一行内容,然后使用QUnit的
assert.deepEqual
方法将结果与预期对象进行比较。我在比较对象中故意输入错误(我使用了
amount:400
而不是
amount:400.00”
)。失败测试的结果将显示在下面

很明显,QUnit的这种功能使测试结果的分析变得容易

我想再次强调,QUnit仍然不能帮助我们编写测试本身。因此,在编写特定于jqGrid功能的测试时,仍然有很多枯燥的工作

无论如何,我计划将来为我的jqGrid分支编写这样的测试(免费jqGrid)。我计划编写一个测试列表,并在将来使用它来验证jqGrid代码的更改。我希望这将有助于使免费jqGrid对变化更稳定。我的意思是,我想在代码的每一次新更改上验证jqGrid的一些功能。因此,我希望功能不会被建议的更改破坏。这就是我对单元测试的期望