如何测试控制器中的setter函数,该函数将值传递给服务设置器

时间:2016-01-28 15:29:00

标签: javascript angularjs jasmine karma-runner

我有我的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触发到我的服务中的setter(getDataService):

setDataType: function (dataT) {

        dataType = dataT;

    },

我对如何测试这一点感到困惑。如何在我的控制器中测试功能,只需在我的服务中调用一个功能?如何在不检查我的服务的情况下测试它以查看值是否已更改? DO 我测试了getter和setter?

1 个答案:

答案 0 :(得分:3)

所以你将分别进行两项测试。控制器中的测试应该测试它正在调用正确的方法:

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

    $scope.setDataType('myDataType');

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