готовые к испусканию заглушки фальшивая функция не работает - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь протестировать свою библиотеку, которая зависит от библиотеки ftp, и мне нужно контролировать, вызвано ли соединение, затем запускается событие ready и т. Д.

В данный момент у меня есть следующий коди готов не запускается.

const ftpClient = require('ftp');
const stubFtp = sandbox.stub(ftpClient);

  beforeEach(function(){


    doubles = {
        sftpclient: sandbox.stub(),
        rp: {request: sandbox.stub()},
        ftpclient: stubFtp 
    };

    dataFetcher = proxyquire('../../../src/myfolder/myfile',
    {
        'ssh2-sftp-client': doubles.sftpclient,
        'ftp': doubles.ftpclient,
        'request-promise': doubles.rp
    });


  });

  afterEach(function(){
    sandbox.restore();
    sinon.restore();

  });


it('should call the connect function of the ftpClient', function(){    
      let urlObj = new URL('ftp://test:test@mydomain.com/file.txt');

      const options = {
          host: urlObj.host,
          port: urlObj.port || undefined,
          user: decodeURIComponent(urlObj.username),
          password:  decodeURIComponent(urlObj.password),
          path: urlObj.pathname
      };

      sinon.stub(stubFtp.prototype, 'connect').callsFake(function(){
        this.emit('ready');
      });      

      return dataFetcher.getMetadata(new URL('ftp://test:test@mydomain.com/file.txt')).then(function(value){
        // This is never called, because there is timeout
        assert.isTrue(doubles.ftpclient.connect.calledOnce);
        assert.isTrue(doubles.ftpclient.list.calledOnce);      
      });
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...