0
테스트 스위트를 설정했는데 타사 모듈을 사용하여 서버에서 파일 이름을 가져 오는 관찰 가능 테스트 방법을 알아낼 수 없습니다.각도 2에서 관찰 할 수있는 테스트 방법
내 openConnection()
방법을 테스트 할 수 있도록 관찰 가능 항목을 조롱하려면 어떻게해야합니까? 나는 그것을 스파이로 완전히 바꾸고 싶지 않다. 관찰할만한 것을 조롱한다.
ssh.service.ts
openConnection(): Observable<any> {
this.Client = this.ssh.getClient();
return Observable.create((obs: Observer<string>) => {
let remotePathToList = '/home';
var conn = this.Client;
this.Client.on('ready',()=>{
conn.sftp((err:any, sftp:any)=>{
if (err) throw err;
sftp.readdir(remotePathToList, (err:any, list:any)=>{
conn.end();
obs.next(list);
//obs.complete(); // required, otherwise your subscription would never close
})
})
}).connect(this.connSettings);
});
}
ssh.spec.ts
describe('SSH service',() => {
let subject: SshService;
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
SshService
]
});
});
beforeEach(inject([SshService], (sshService: SshService) => {
subject = sshService;
}));
it('should mock an observable',() => {
var res = Observable.create((obs: Observer<string>) => {
obs.next('hello');
});
expect(subject.openConnection()).toEqual(res);
});
});
관측 대상을 조롱하거나 테스트하고 싶습니까? 그것은 그 같은 연결을 열어 놓는 것이 매우 단위 상 괜찮습니다. – chrispy
당신은 반환 된 observable을'res'와 같게하고 싶습니다. 그리고 여러분은 여러분이 기대하는 것과 일치하는'res'를 생성하려고합니다. – chrispy
연결을 열어주는 것이 너무 힘들다는 것을 알고 있습니다. 모든 구성 요소가 작동하도록 설정하면 관찰 가능 호출에서 getData() 메서드를 만들 수 있습니다. 기본적으로 일부 더미 데이터로 테스트에서 관찰 할 수있는 openConnection()을 해결하고 openConnection()이 더미 데이터를 반환하는지 테스트하는 방법을 찾고 있습니다. –