0

我有以下控制器方法:

function changeItem(itemList) {
            vm.selectedItem = '';
            if(itemList !== null || itemList !== '' && itemList !== undefined){
				if (itemList.guestFirstName !== '' &&
					itemList.guestFirstName !== undefined &&
					itemList.guestFirstName !== null) {
					vm.selectedItem += itemList.guestFirstName + ' ';
				}
				if (itemList.guestLastName !== '' &&
					itemList.guestLastName !== undefined &&
					itemList.guestLastName !== null) {
					vm.selectedItem += itemList.guestLastName + ' ';
				}
				Iif (itemList.type !== '' &&
					itemList.type !== undefined &&
					itemList.type !== null) {
					vm.selectedItem += itemList.type + '-';
				}
				if (itemList.id !== '' &&
					itemList.id !== undefined &&
					itemList.id !== null) {
					vm.selectedItem += itemList.id + ' ';
					if (itemList.id === "All") {
						vm.selectedId.push(vm.itemLists.id);
					}
					else {
						vm.selectedId = itemList.id;
					}
				}
			}
        }
    }

规范.js:

t('listController - changeItem()', inject(function () {
            var itemList = [  
                {  
                    "id":111,
                    "guestfirstName":"Test",
                    "guestlastName":"Test",
                    "type":"BUSINESS"
                 },
                {  
                    "id":222,
                    "guestfirstName":"Test",
                    "guestlastName":"Test",
                    "type":"BUSINESS"
                },
            ];
            var selectedItem = "Test Test BUSINESS-111"

            controller.changeItem(itemList);
            scope.$apply();
            expect(controller.selectedItem).to.equal(selectedItem);
            expect(controller.selectedId).to.equal(itemList[0].id);
        }));

但是,当我运行测试时,它说语句和分支除了函数之外没有被覆盖。

谢谢

4

1 回答 1

0

您可以使用单独的 it() 语句来检查 itemList 的各个部分,每次都巧妙地更改它,然后重新运行 changeItem() 方法。然后,您将定制该 itemList 以达到每个 if 语句以达到您需要的覆盖范围。请记住,您必须确保测试提供了一些东西。

我可能会将 itemList 声明移到 beforeEach() 然后在每个 it() 测试中,稍微改变它:

itemList[0].guestLastName = '';

另一方面,我建议使用 Ramda 或 Lodash 等 3rd 方库来处理您的未定义/空检查。if (!_.isNil(guestLastName)) { }例如将涵盖您的所有 3 个测试。

于 2016-12-07T10:36:06.563 回答