预期真实等于假

时间:2018-05-28 08:01:10

标签: javascript html angular testing

我想用角度来测试一些真正没有在Anguar教程中的东西。

我试图测试当输入的值无效时输出错误消息,因此在放置超过20个字符的wor时隐藏的属性为false。

  <input #cardInput type="text" class="form-control" name="tarjetaSanitaria" id="field_tarjetaSanitaria"
	                [(ngModel)]="paciente.tarjetaSanitaria" maxlength="20"/>
	            <div [hidden]="!(editForm.controls.tarjetaSanitaria?.dirty && editForm.controls.tarjetaSanitaria?.invalid)">
	                <small class="form-text text-danger"  id="ref"
	                   [hidden]="!editForm.controls.tarjetaSanitaria?.errors?.maxlength"  translateValues="{ max: 20 }">
	                   This field cannot be longer than 20 characters.
	                </small>

我的组件有这个:

 paciente: Paciente = {tarjetaSanitaria: 'ddd'} as Paciente;

我的测试:

       fit ('Blank input is not valid', async(() => {
               
                comp.paciente.tarjetaSanitaria = 'ddddddddddddddddddddddddddddddddddddddddddd' ;
                spyOn(comp, 'save');
              var1 = comp.submitButton.nativeElement;
              var1.click();
              fixture.detectChanges();
              expect(comp.save).toHaveBeenCalledTimes(1);
expect(fixture.debugElement.query(By.css('#ref')).nativeElement.hasAttribute('hidden')).toEqual(false);

                })); 

它总是失败说预期true对于false false.IF我删除了fixture.detectChanges它离开了传递。我做错了什么?

1 个答案:

答案 0 :(得分:0)

表达式

 fixture.debugElement.query(By.css('#ref')).nativeElement.hasAttribute('hidden')

读取就好像它正在测试#ref元素是否具有名为hidden的属性。如果是这样,结果不太可能取决于属性的值。

如果nativeElement属性是DOM中的HTMLElement,它始终具有隐藏的&#39;属性,您应该能够使用

获取其值
fixture.debugElement.query(By.css('#ref')).nativeElement.getAttribute('hidden')

但是我无法方便地验证属性的数据类型。如果它是一个字符串,你应该期望它的值是字符串&#34; false&#34;。如果它是布尔值,您可能需要期望其值为布尔值false

如果你不知道&#34;隐藏&#34;的数据类型?属性已经存在,或者属性中存储了true和false,添加一些调试代码以建立数据类型,然后再继续。祝你好运!