Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在模块中测试OpenCV nodejs绑定代码?_Javascript_Node.js_Opencv_Mocha.js - Fatal编程技术网

Javascript 如何在模块中测试OpenCV nodejs绑定代码?

Javascript 如何在模块中测试OpenCV nodejs绑定代码?,javascript,node.js,opencv,mocha.js,Javascript,Node.js,Opencv,Mocha.js,我正在试验opencv,我刚刚创建了一个“face finder”模块 代码运行良好。但是,我的mocha测试并没有执行整个代码 这是我的存储库: 当我运行此测试时: describe('FaceFinder', function() { it('should work', function() { return FaceFinder('/Users/scaryguy/arge/opencv/facefinder/test/fixtures/childFaces.jpg

我正在试验opencv,我刚刚创建了一个“face finder”模块

代码运行良好。但是,我的mocha测试并没有执行整个代码

这是我的存储库:

当我运行此测试时:

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);
        });
    })
}
//https://github.com/scaryguy/facefinder/blob/master/lib/find.js
Find.prototype.image=函数(cb){
var img=此;
cv.readImage(img.image\u路径、函数(err、im){
if(err)返回cb(err,false);
//当我在这里输入console.log时,会显示
im.detectObject(cv.FACE_CASCADE,{},函数(err,faces){
//但是在执行测试时,这里永远不会运行。
if(err)返回cb(err,false);
对于(变量i=0;i
奇怪的是,当我需要这个模块并运行代码时,它工作得非常完美。但在测试时它不起作用。没有错误

有什么想法吗?

im.detectoObject()
方法接受异步回调,也就是说,它不会立即发生,而是在以后发生

我不熟悉这个OpenCV库,但鉴于方法的名称(detectObject),我猜这个方法在检测到
cv.FACE\u级联对象时只会调用回调

你的情况几乎肯定是这样的:

  • 运行模块时,检测到
    cv.FACE_CASCADE
    对象,并且 代码运行
  • 运行测试时,没有要检测的
    cv.FACE\u CASCADE
    ,并且它不会运行(但也不会导致错误)