【发布时间】:2018-07-24 01:57:01
【问题描述】:
我正在尝试更改组件的@Input 属性并基于新属性,尝试检查按钮是否启用/禁用。参考代码here
我正在遵循此链接中描述的确切程序,但无法正常工作。我正在使用 detectChanges() 更改值,但它没有按预期给出结果。
HTML:
<form>
<label>Email</label>
<input type="email"
#email>
<label>Password</label>
<input type="password"
#password>
<button type="button"
(click)="login(email.value, password.value)"
[disabled]="!enabled">Login
</button>
</form>
组件:
@Input() enabled = true;
规格:
describe('testing app component', () => {
let component;
let service;
let fixture;
let element;
let atag;
let loginEl;
let passwordEl;
let submitEl;
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [
AppComponent
],
providers: [
AppService
]
}).compileComponents();
// create component fixture
fixture = TestBed.createComponent(AppComponent);
// get component's instance for testing
component = fixture.debugElement.componentInstance;
// getting service instance from tets bed
service = TestBed.get(AppService);
// getting button element
fixture.detectChanges();
element = fixture.debugElement.query(By.css('button'));
atag = fixture.debugElement.query(By.css('a'));
submitEl = fixture.debugElement.query(By.css('button'));
loginEl = fixture.debugElement.query(By.css('input[type=email]'));
passwordEl = fixture.debugElement.query(By.css('input[type=password]'));
});
it('testing input property: @Input enabled', () => {
expect(component.enabled).toBe(true);
expect(submitEl.nativeElement.disabled).toBeFalsy();
component.enabled = false;
fixture.detectChanges();
expect(submitEl.nativeElement.disabled).toBeTruthy();
});
});
但是这个规范会抛出一个错误:Error: Expected false to be truthy.
【问题讨论】:
标签: angular unit-testing karma-jasmine