如何在模块中测试 OpenCV nodejs 绑定代码
How to test OpenCV nodejs binding code in a module?
我正在试验opencv,我刚刚创建了一个'人脸查找器'模块。
代码运行良好。但是,我的摩卡测试没有执行整个代码。
这是我的存储库: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);
});
})
}
奇怪的是,当我需要这个模块并运行代码时,它运行得很好。但它在测试时不起作用。而且没有错误。
有什么想法吗?
im.detectObject()
方法接受异步回调 - 即,它不会立即发生,而是在以后发生。
我不熟悉这个 OpenCV 库,但给定方法的名称 (detectObject),我猜这个方法只有在检测到cv.FACE_CASCADE Object
时才会调用回调。
您的情况几乎可以肯定是这样的:
- 运行模块时,检测到
cv.FACE_CASCADE
对象,并且代码将运行。 - 运行测试时,没有要检测的
cv.FACE_CASCADE
,并且它不会运行(但不会导致错误)。
相关文章:
- nodejs-expressjs上传图像并显示它们
- TypeError:在不兼容的接收器nodejs上调用了方法Uint8Array.length
- NodeJS-readline暂停和恢复事件发射器(逐行读取)
- NodeJS日期格式不起作用
- Nested Q.all nodejs
- Nodejs API控制器,用于在API之间切换
- 否'访问控制允许来源'标头存在于IISNOde中请求的资源(AngularJS+NodeJs)上
- 如何在大型nodeJS代码的基础上逐步引入typescript
- 在Nodejs中Express输入DEBUG=app时权限被拒绝/bin
- 无法使用nodeJS在html中设置Image src
- 与域在同一台计算机上运行的NODEJS服务器的CORS错误
- NodeJS API调用中Array中的Push和Pull元素
- 基于api密钥的NodeJS web服务
- 在gump和nodejs中使用Typescript时,未定义对require和exports的引用
- “util.inherits”和在NodeJS中扩展原型之间的区别
- 将一个方法转换为promise:Nodejs
- nodejs中匿名函数的使用
- Node和Nodejs版本不同
- Nodejs服务器在解析之前生成输入表单
- 如何在模块中测试 OpenCV nodejs 绑定代码