在花了一些时间研究如何编写正确的测试用例之后,我发现我在期望错误的条件来评估正确的输出。所以我现在就是这样做的。
测试用例
describe('createParameterGroup', function() {
it('with blank name returns error message of property name can not be blank', function() {
var parameterGroup = {
name: "",
description: "sss",
fromMonth: 1,
fromYear: 18,
toMonth: 12,
toYear: 18
};
$scope.createParameterGroup(parameterGroup);
for (var property in parameterGroup) {
if (!parameterGroup[property] && property != 'description') {
var propertyName = (property == 'name') ? 'Parameter group name' : property;
}
return property;
}
expect($scope.createPopupInfo.validationErrors.isError).toEqual(true);
expect($scope.createPopupInfo.validationErrors[property]).toEqual(propertyName + ' ' + constantsProvider.validationMessages.blankField);
});
it('with special characters returns error message of invalid parameter group name', function() {
var parameterGroup = {
name: "/*&",
description: "ABC",
fromMonth: 1,
fromYear: 18,
toMonth: 12,
toYear: 18
};
$scope.createParameterGroup(parameterGroup);
expect($scope.createPopupInfo.validationErrors.isError).toEqual(true);
expect($scope.createPopupInfo.validationErrors.name).toEqual('Parameter group name \'' + parameterGroup.name + '\' ' + constantsProvider.validationMessages.specialCharacters);
});
it('with invalid effective time period returns error message of Invalid effective time period', function() {
var parameterGroup = {
name: "ABC",
description: "ABC",
fromMonth: 5,
fromYear: 18,
toMonth: 4,
toYear: 18
};
$scope.createParameterGroup(parameterGroup);
expect($scope.createPopupInfo.validationErrors.isError).toEqual(true);
expect($scope.createPopupInfo.validationErrors.toYear).toEqual(constantsProvider.validationMessages.effectiveTimePeriod);
});
it('with valid input returns the given input back without any error message', function() {
var parameterGroup = {
GroupName: "ABC",
Description: "sss",
EffectiveStartDateTime: 1 / 18,
EffectiveEndDateTime: 12 / 18
};
var createResponse = {};
createResponse.IsSuccess = true;
spyOn(parameterGroupApiService, 'createParameterGroup').and.callFake(function() {
return {
then: function(callback) {
return callback(createResponse);
}
}
});
spyOn(parameterGroupApiService, 'getParameterGroups').and.callFake(function() {
return {
then: function(callback) {
callback(parameterGroup);
return {
catch: function() {}
}
}
}
});
$scope.createParameterGroup(parameterGroup);
expect($scope.createPopupInfo.validationErrors.isError).toEqual(false);
expect(parameterGroupApiService.createParameterGroup).toHaveBeenCalled();
expect(parameterGroupApiService.getParameterGroups).toHaveBeenCalled();
expect($scope.parameterGroups).toBe(parameterGroup);
});
});