2017-02-06 62 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 } 
     ] 
    }); 
}); 
関連する問題