0

refresh()我有一个 AngularJs 控制器,它在构建时调用它自己的方法。有问题的方法访问单元测试期间不存在的一些模板元素。

function ListController($scope) {
    /// ...

    $scope.refresh = function() {
        var tabId = angular.element('#id li.active a').attr('href');
        //etc
    }

    //Initialise
    $scope.refresh();
}

在构建控制器时,refresh 方法会导致单元测试失败。由于它所做的工作与测试无关,我想用存根覆盖该方法并简单地测试它是否已被调用。

Jasmine 的 Spy 功能看起来像是要走的路,但我找不到在构造对象之前为它设置一个的方法。我该怎么做?

4

1 回答 1

0

您应该将其移至指令的链接函数。链接功能基本上是编译的结果,因此您将确定您的元素已编译并准备就绪,这将使您的“刷新”功能变得不必要。一般来说,你永远不应该从控制器通过 jqLit​​e 或 jQuery 访问 DOM。此外,链接功能提供了对元素、范围和属性(甚至是 href)的直接访问,这很好。

于 2013-08-07T14:42:22.810 回答