我有我的HTML,其中包含一个模式窗口,其中是一个ng-repeat

<strong>Data Type:</strong><select ng-options="dataTypes for dataTypes in dataTypeItems"
                                               ng-model="dataTypes"
                                               ng-change="setDataType(dataTypes)">
                <option value="">Select Option</option>
            </select>


我的HTML与我的mainCtrl,特别是setDataType(dataType)方法通信:

$scope.setDataType = function (dataT) {
    getDataService.setDataType(dataT);
};


依次将字符串值dataType触发到我的服务(getDataService)中的设置器:

setDataType: function (dataT) {

        dataType = dataT;

    },


我对如何测试这一点完全感到困惑。如何在仅调用服务中函数的控制器中测试该函数?我如何在不检查服务的情况下测试此值是否已更改?我会测试吸气剂和吸气剂吗?

最佳答案

因此,您将分别进行两个测试。控制器中的测试应仅测试其是否调用了正确的方法:

it('.setDataType should call getDataService.setDataType with the correct parameter', inject(function (getDataService) {
    spyOn(getDataService, 'setDataType');

    $scope.setDataType('myDataType');

    expect(getDataService.setDataType).toHaveBeenCalledWith('myDataType');
}));

关于javascript - 如何在 Controller 中测试将值传递给服务 setter 的 setter 功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35065527/

10-12 00:03
查看更多