2016-08-21 3 views
0

У меня есть класс, в котором используется Chokidar, и теперь нужно протестировать его с помощью жасмина. Это метод, где сторож приходит на борту:Как запускать программу Chokidar programmaticaly

public watch(path: string) { 
    var watchOptions: chokidar.WatchOptions = <chokidar.WatchOptions> { 
     persistent: true 
    }; 
    this.watcher = chokidar.watch(path, watchOptions); 
    this.watcher.on("add", (fileName: string, stats: fs.Stats) => { 
     this.sendNotifyAction(new NotifyAction(PathEvent.Add, fileName)); 
    }).on("change", (fileName: string, stats: fs.Stats) => { 
     this.sendNotifyAction(new NotifyAction(PathEvent.Change, fileName)); 
    }) 
} 

Я хочу, чтобы в моем тестовом что-то вроде:

it("Should send notification, when internal directory is added",() => { 
     runs(() => { 
      flag = false; 
      pathWatch.watch(dirPath); 

      //TRIGGER chokidar on.add event?? 
      //spyOn(pathWatch.watcher, "on").and.callFake((params) => { 
      // flag = true; 
      //}); 

     }); 
     waitsFor((): boolean => { 
      return flag; 
     }, "failure", 5000); 

     runs(() => { 
      var expectedNotifyAction = new NotifyAction(PathEvent.Add, notificationInternalDirPath); 
      expect(subscriber.processNotifyAction).toHaveBeenCalledWith(expectedNotifyAction); 
     }); 
    }); 

Проблема заключается в том, что я не знаю, как эмулировать события сторож. Буду признателен за любую оказанную помощь.

+0

почему бы не просто запись в файл и добавить файл с API-интерфейсом node.js, он должен вызвать chokidar – qballer

+0

, вот как я это делаю сейчас, но это немного грязно, и мне интересно, как эмулировать события chokidar –

+2

из тестов chokidar https://github.com/paulmillr /chokidar/blob/master/test.js#L162 – qballer

ответ

1

Экземпляр наблюдающий наследует от EventEmitter, так что вы можете назвать .emit() на нем (хотя я не знаю, как/если это будет работать с машинопись):

pathWatch.watcher.emit('add', PATH, STATS); 
+0

Спасибо, это работает для меня! –

Смежные вопросы