我在设置单元测试中名为searchUser的FormControl字段的值时遇到了问题。角度4单元测试问题 - 我想设置表单FormControl字段值
在下面的代码中,“this.searchUser.value”是一个表单控件。 所以在我的测试中,我这样做,所以我可以将它设置,但没有工作:
homeComponent.searchUser = new FormControl();
homeComponent.searchUser.value = "ste";
这是组件的方法我测试(mapUsers):
mapUsers(users: User[]): User[] {
let results: User[] = [];
users.forEach((user: User) => {
let name = user.name.toLowerCase();
if (name.includes(this.searchUser.value.toLowerCase())) results.push(user);
});
return results;
}
这是我的充分的单元测试规范:
import { TestBed, async, inject } from "@angular/core/testing";
import { Observable } from "rxjs/Observable";
import { of } from 'rxjs/observable/of';
import { HttpClient, HttpHandler } from "@angular/common/http";
import { RouterTestingModule } from "@angular/router/testing";
import { FormControl } from "@angular/forms";
import { HomeComponent } from "./home.component";
import { HomeModule } from "./home.module";
import { UserService } from "../../services/user.service";
import { User } from "../../models/user.model";
import { HighlightDirective } from "../../directives/highlight.directive";
describe("HomeComponent",() => {
let userService;
let homeComponent;
let fixture;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
HomeModule,
RouterTestingModule.withRoutes([])
],
providers: [
HttpClient,
HttpHandler,
UserService
]
})
});
beforeEach(inject([UserService], service => {
userService = service;
fixture = TestBed.createComponent(HomeComponent);
homeComponent = fixture.componentInstance;
}));
it("should return array of users", async(() => {
// Arrange
const mockUsers: User[] = [{"name": "Steven"}];
homeComponent.searchUser = new FormControl();
homeComponent.searchUser.value = "ste";
// Act
const mockResponse = homeComponent.mapUsers(mockUsers);
fixture.detectChanges();
// Assert
expect(mockResponse).toEqual(mockUsers);
}));
});
噶错误,我得到:
失败:[对象的对象]仅具有 吸气
的可能的复制[Angualr2错误:的#无法设置属性值仅具有吸气剂](https://stackoverflow.com/questions/38810174/angualr2-error-cannot-set-property - 值-的-abstractcontrol-其中-具有 - onlyly) –
jonrsharpe