Cześć.
Mam problem z jednym przypadkiem jeśli chodzi o testy. Przekazuje tutaj zmienną za pomocą serwisu i nie wiem jak to dobrze przetestować.
MyTaskComponent
constructor(
private projectService: ProjectService
) {
this.projectService.$data.subscribe(val => {
this.putTable(val);
});
}
MyTaskComponent.spec
let component: MyTasksComponent;
let fixture: ComponentFixture<MyTasksComponent>;
let projectService: jasmine.SpyObj<ProjectService>;
projectService = jasmine.createSpyObj('ProjectService', ['getData']);
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [
MyTasksComponent, FilterTablePipe, StatusPipe
], providers: [
{ provide: ProjectService, useFactory: () => spyOnClass(ProjectService)}
]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(MyTasksComponent);
component = fixture.componentInstance;
projectService = TestBed.get(ProjectService);
const task = new Task();
projectService.getData.and.returnValue(of(task)); // tu mam problem
fixture.detectChanges();
});
ProjectServices
export class ProjectService {
private dataSource = new Subject<Task>();
$data = this.dataSource.asObservable();
getData(data) {
return this.dataSource.next(data);
}
}
błąd:
Argument of type 'Observable<Task>' is not assignable to parameter of type 'void'.
Problem mam z tym ,że nie mogę zrozumieć jak mam to popranie zamokować. Z góry dziękuje za pomoc i wszelkiego rodzaju wskazówki.