【问题标题】:AngularJS - unit testing a controller method that gets called on initializationAngularJS - 单元测试在初始化时调用的控制器方法
【发布时间】:2015-11-02 05:46:56
【问题描述】:

在我的 AngularJS 控制器中,我有一个 $scope.init 方法,该方法在控制器初始化时被调用。 $scope.init 调用 $scope.loadData$scope.loadNames,它们分别向 API 发出 HTTP GET 请求以获取一些数据。

我使用$httpBackend 编写了一些单元测试来模拟API 响应并测试$scope.loadData$scope.loadNames。这些工作正常,但我似乎无法测试的是$scope.init 方法。有没有办法模拟或存根在控制器初始化时调用的方法?这方面的最佳做法是什么?

【问题讨论】:

    标签: angularjs unit-testing jasmine karma-jasmine angularjs-controller


    【解决方案1】:

    您可以在控制器初始化后验证$scope.init 中更改的范围对象是否具有正确的值。您甚至可以尝试更改这些对象的值,然后重新运行 init 方法,然后检查所有内容是否匹配

    【讨论】:

      【解决方案2】:

      你可以测试一下:

      • 控制器“初始化”后的状态与预期一致

      • 验证 loadnames 和 loaddata 是否被调用(jasmine 的 spyOn+toHaveBeenCalled)

      • 使用一个模拟 loadnames/loaddata 方法响应的 promise 对象来验证您在意外情况下的行为

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-14
        相关资源
        最近更新 更多