0
(?) :Angular2 Test (재스민) 조롱 서비스. 서비스에 대한 모든 매개 변수를 확인할 수 없습니다 : 내 구성 요소를 테스트하기 위해 다음과 같은 서비스를 조롱하려고
제작 :
@Injectable()
export class UserService extends DtoService {
// some not relevant stuff.
}
@Injectable()
export abstract class DtoService {
constructor(private http: Http, private authHttp: AuthHttp) {}
get() {
return this.http.get(...);
}
}
@Component({
selector: 'users',
templateUrl: 'users.component.html',
styleUrls: ['users.scss'],
providers: [UserService]
})
export class UsersComponent implements OnInit, OnDestroy {
constructor(private userService: UserService) {}
// etc
}
테스트 :
class MockUserService {
public get(): Observable<User> {
return Observable.of(new User({id: 1, email: '[email protected]'}));
}
}
beforeEach(async(() => {
TestBed
.configureTestingModule({
declarations: [UsersComponent],
providers: [{provide: UserService, useClass: MockUserService}]
});
this.fixture = TestBed.createComponent(UsersComponent);
}));
을 가장 고전적인 유스 케이스인데, 맞습니다 (angular test doc 참조)? 하지만 여기에 오류가 발생합니다 :
하지만 UserService는 전혀 인스턴스화되지 않아야합니다. 내가 도대체 뭘 잘못하고있는 겁니까? 커뮤니티에 감사드립니다.
그것은 실제로 각도의 테스트 시스템에 대한 자세한 질문을? - 내 stubing 서비스는 stubed의보다 같은 생성자 서명을해야합니까? 각도는 생산과 같은 @Injectable()와 자체에 의해 HTTP 및 authHttp을 찾을 생각하지 않습니다 - ?- 어떻게 NULL 값을 생성자에 null 파이프 할 수 있습니까? 감사합니다. – Bill
예, 동일한 생성자를 가져와야합니다. 그래서 스텁에 고통스러운 서비스를받을 때 스터브하는 대신에 스파이로 간다고 권유 할 수 있습니다. 각진 문서는 스파이 서비스에 대해 분명히 알고 있으므로 문제를 해결하기 위해 살펴볼 수 있습니다. – Flow