单元测试角度如果条件使按钮被禁用



我尝试为这种条件创建单元测试

insertForm(index) {
if (this.getForms().length === 0) {
this.getForms().insert(0, this.formTemplate());
} else {
this.getForms().insert(index + 1, this.formTemplate());
}
if (this.getForms().length > 99) {
this.addBtnDisabled = true;
}

}

我有3个条件,我成功地满足了2个第一条件,但在最后一个条件下,我超出了我的预期,addBtDisabled应该是真的。但在因果报应中,它显示出虚假。这是我在茉莉花的密码。我的最后一种情况怎么了?

it('insert form function should insert new form in index 0 IF GETFORMS.LENGTH IS 0', () => { 
(component.formGroup.get('forms') as FormArray).removeAt(0);
const getFormValue = component.getForms().length;
expect(getFormValue).toEqual(0);
component.insertForm(0);
expect(component.getForms().length).toEqual(1);

});

it('insert form function should insert new form in index param + 1 IF GETFORMS.length not equal to 0', () => {
const getFormLength: number = component.getForms().length;
const isGetFormLengthtoNotEqual0: boolean = (getFormLength > 0);
expect(isGetFormLengthtoNotEqual0).toBeTruthy();
expect(component.getForms().length).toEqual(1);
spyOn(component.getForms(), 'insert').and.callThrough();
component.insertForm(1);
expect(component.getForms().length).toEqual(2);
});

it('insert form function should addBtnDisabled', () => { // 
const getFormValue: number = component.getForms().length + 99;
expect(getFormValue).toEqual(100);
component.insertForm(100);
expect(component.addBtnDisabled).toBeTruthy()
});

看起来上一次测试实际上并没有设置component.getForms().length,这意味着长度与初始值无关。你可以做一些类似的事情:

spyOn(component, 'getForms').and.returnValue({length: 100});
const count = component.getForms().length;
component.insertForm(100);
expect(count).toEqual(100);
expect(component.addBtnDisabled).toBeTrue();

因此,您正在设置一个间谍来监视getForms的组件方法,当它被调用时,您将设置返回值。从那里您可以调用insertForm方法,该方法反过来设置您的添加按钮禁用值。

它可能没有做你期望的事情的原因是,在你的函数中,你似乎没有真正改变getForms()的长度,所以它只是停留在它的初始值。

最新更新