我有一个Angular 6应用程序,可以将数据加载到
反应形式
使用
ngrx
.我试图对其进行单元测试,但似乎无论我做什么更改,我的表单对象的属性值始终为空。
这是我的代码:
HTML
<form [formGroup]="myForm" novalidate>
<input id="name" formControlName="name" />
<input id="age" formControlName="age" />
</form>
组成部分
export interface MyObject {
name: string;
age: string;
}
export class MyObjectComponent {
myObject: MyObject;
myForm: FormGroup;
constructor(private fb: FormBuilder, private store: Store<fromStore.State>) { }
ngOnInit() {
this.myForm = this.fb.group({
name: [null, [Validators.required]],
age: [null, [Validators.required]]
});
this.store.select(fromStore.getMyObject).subscribe(x => this.myForm.patchValue(x));
}
规格文件
describe('MyObjectComponent', () => {
let component: MyObjectComponent;
let fixture: ComponentFixture<MyObjectComponent>;
let store: Store<fromStore.State>;
let initialStateL MyObject;
let el: DebugElement;
beforeEach(async(() => {
initialState = {
name: 'My Name',
age: 55
};
TestBed.configureTestingModule({
imports: [
FormsModule,
ReactiveFormsModule,
HttpClientModule,
StoreModule.forRoot({}),
StoreModule.forFeature('my-object', reducer)
],
declarations: [MyObjectComponent],
providers: []
})
.compileComponents().then(() => {
fixture = TestBed.createComponent(MyObjectComponent);
component = fixture.componentInstance;
el = fixture.debugElement;
spyOn(store, 'dispatch').and.callThrough();
fixture.detectChanges();
});
}));
it('should patch values into form', async(() => {
expect(component.myForm.controls.age.value).toBe(55);
}
}
测试总是失败,因为表单中的值为零。有人知道我做错了什么吗?谢谢