2017-02-06 4 views
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); 
    }); 
}); 
+0

관측 대상을 조롱하거나 테스트하고 싶습니까? 그것은 그 같은 연결을 열어 놓는 것이 매우 단위 상 괜찮습니다. – chrispy

+0

당신은 반환 된 observable을'res'와 같게하고 싶습니다. 그리고 여러분은 여러분이 기대하는 것과 일치하는'res'를 생성하려고합니다. – chrispy

+0

연결을 열어주는 것이 너무 힘들다는 것을 알고 있습니다. 모든 구성 요소가 작동하도록 설정하면 관찰 가능 호출에서 getData() 메서드를 만들 수 있습니다. 기본적으로 일부 더미 데이터로 테스트에서 관찰 할 수있는 openConnection()을 해결하고 openConnection()이 더미 데이터를 반환하는지 테스트하는 방법을 찾고 있습니다. –

답변

0

이 시도, 그것은 "가짜"는에서 당신을 위해 관찰 해결한다 SSH 서비스.

describe('SSH service',() => { 
let fakeData = "Fake Data I want to return" 

let fakeSSHService = { 
    openConnection:() => Observable.of(fakeData) 
} 

beforeEach(() => { 
    TestBed.configureTestingModule({ 
     providers: [ 
      { provide: SshService, useValue: fakeSSHService } 
     ] 
    }); 
}); 
관련 문제