2016-02-17 1 views
2

Я экспериментирую с opencv, и я только что создал модуль «Face Finder».Как проверить код привязки OpenCV nodejs в модуле?

Код работает хорошо. Однако мой мокко-тест не выполняет весь код.

Вот мой репозиторий: https://github.com/scaryguy/facefinder

Когда я запускаю этот тест:

describe('FaceFinder', function() { 
    it('should work', function() { 
     return FaceFinder('/Users/scaryguy/arge/opencv/facefinder/test/fixtures/childFaces.jpg', '/Users/scaryguy/arge/opencv/facefinder/') 
    }); 
}); 

Мой код выполняется частично.

Посмотрите, где я прокомментировал строку, где код выполняется последним.

// https://github.com/scaryguy/facefinder/blob/master/lib/find.js 
Find.prototype.image = function(cb) { 
    var img = this; 
    cv.readImage(img.image_path, function(err, im) { 
     if (err) return cb(err, false); 
// WHEN I console.log something here it's shown 
     im.detectObject(cv.FACE_CASCADE, {}, function(err, faces) { 
// BUT here is never run WHILE executing the test. 
      if (err) return cb(err, false); 
      for (var i = 0; i < faces.length; i++) { 
       var x = faces[i] 
       im.ellipse(x.x + x.width/2, x.y + x.height/2, x.width/2, x.height/2); 
      } 
      im.save(img.output_name + ".jpg"); 
      console.log("Number of found faces: " + faces.length + "\n"); 
      cb(null, true); 
     }); 
    }) 
} 

Странно, когда мне нужен этот модуль и запускайте код, он отлично работает. Но это не работает во время тестирования. И нет ошибки.

Любые идеи?

ответ

0

Метод im.detectObject() принимает асинхронный обратный вызов - то есть, это произойдет не сразу, а позже.

Я не знаком с этой библиотекой OpenCV, но учитывая имя метода (detectObject) Я собираюсь предположить, что этот метод будет вызывать обратный вызов только, когда он обнаруживает cv.FACE_CASCADE Object.

Ваша ситуация почти наверняка так:

  • При запуске модуль, cv.FACE_CASCADE объект обнаружен, и код работает.
  • При запуске теста нет cv.FACE_CASCADE для обнаружения, и он не запускается (но также не вызывает ошибки).
Смежные вопросы