如何在控制器中测试将值传递给服务setter的setter函数

How to test a setter function in controller which passes a value to service setter

本文关键字:setter 服务 值传 函数 控制器 测试      更新时间:2023-09-26

我有我的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');
}));