Unit testing 指令内部的单元测试指令
我在单元测试包装ng grid组件的指令时遇到了问题 我写了一个朋克来说明这个问题: 我知道有很多代码,但我不能减少更多 基本上,有一个定制的grid指令,用于从AngularUI中包装ng网格组件。我之所以这样做是因为我的应用程序中有很多网格,我不会复制网格的配置 显示在测试结果顶部的网格使用此指令。因此,您可以看到它工作正常:) 然而,关于如何测试这个指令,我可能遗漏了一些东西。 我编写了一个简单的测试,断言第一行第一列显示“Martoni”,但它失败了。使用ng grid指令的相同测试通过 知道我的测试代码出了什么问题吗? 在递归调用指令(或者至少是嵌套指令)之前,我遇到过一些问题,特别是当它们使用Unit testing 指令内部的单元测试指令,unit-testing,angularjs,angularjs-directive,Unit Testing,Angularjs,Angularjs Directive,我在单元测试包装ng grid组件的指令时遇到了问题 我写了一个朋克来说明这个问题: 我知道有很多代码,但我不能减少更多 基本上,有一个定制的grid指令,用于从AngularUI中包装ng网格组件。我之所以这样做是因为我的应用程序中有很多网格,我不会复制网格的配置 显示在测试结果顶部的网格使用此指令。因此,您可以看到它工作正常:) 然而,关于如何测试这个指令,我可能遗漏了一些东西。 我编写了一个简单的测试,断言第一行第一列显示“Martoni”,但它失败了。使用ng grid指令的相同测试通过
$compile
服务时(尤其是ng repeat
)。我确信那里有一个bug,但我还没有花时间找到一个孤立的案例。无论如何,我认为你发现的是某种bug,但有一个简单的解决方法
如果您查看ngGrid的源代码,您将看到只有当宽度足够大时才添加列。当我在你的第二个例子中进行一步时,w
是否定的,这导致了addCol
从未被调用
var w = col.width + colwidths;
if (col.pinned) {
addCol(col);
var newLeft = i > 0 ? (scrollLeft + totalLeft) : scrollLeft;
domUtilityService.setColLeft(col, newLeft, self);
totalLeft += col.width;
} else {
if (w >= scrollLeft) {
if (colwidths <= scrollLeft + self.rootDim.outerWidth) {
addCol(col);
}
}
}
colwidths += col.width;
然后进行清理:
afterEach(function () {
angular.element(elm).remove();
});
我不知道这是否是有意的,但您在第一个单元测试中调用了$rootScope
上的$new()
,但没有使用该结果进行编译,而您在第二个单元测试中调用了它
afterEach(function () {
angular.element(elm).remove();
});