我想将导入的模块替换为存根,以便只对主模块进行单元测试。我试过用西农。但是它似乎并没有达到我期望的效果,因为我在运行测试时不断遇到错误。
{ Error: Command failed: identify: unable to open image `test.exe': No such file or directory @ error/blob.c/OpenBlob/2724. identify: no decode delegate for this image format `EXE' @ error/constitute.c/ReadImage/504. at ChildProcess. (/node_modules/imagemagick/imagemagick.js:88:15) at ChildProcess.emit (events.js:159:13) at maybeClose (internal/child_process.js:943:16) at Process.ChildProcess._handle.onexit (internal/child_process.js:220:5) timedOut: false, killed: false, code: 1, signal: null }
这是我的主要模块。
// src/services/identifyService.js import imagemagick from 'imagemagick'; class IdentifyService { async identify(filePath) { imagemagick.identify(['-format', '%w_%h', filePath], function(err, output) { if (err) reject(err); return resolve(output); }); } }
这是我的测试。
// test/identifyService.test.js import imagemagick from 'imagemagick'; import IdentifyService from '../src/services/identifyService'; describe('Verify image processing', () => { before(() => { const fileInfo = [{page: 1, width:100, height: 100, colorspace: 'RGB'}]; sinon.stub(imagemagick, 'identify').returns(fileInfo); }); it('returns metadata', (done) => { const metadata = IdentifyService.identify('test.exe'); expect(metadata).to.have.lengthOf(0); }); });
我是不是做错了什么?任何帮助将不胜感激。
首先,我发现IdentifyService
类在promise
用法方面存在问题。
class IdentifyService {
identify(filePath) {
return new Promise((resolve, reject) => { // create a new promise
imagemagick.identify(['-format', '%w_%h', filePath], function (err, output) {
if (err) reject(err);
resolve(output); // no need to specify `return`
});
});
}
}
对于测试本身,它必须为imagemagick使用
,因为它是一个带有yields
。识别回调的函数
。
describe('Verify image processing', () => {
before(() => {
const fileInfo = [{page: 1, width:100, height: 100, colorspace: 'RGB'}];
sinon.stub(imagemagick, 'identify').yields(null, fileInfo); // use yields
});
it('returns metadata', async () => {
const metadata = await IdentifyService.identify('test.exe');
expect(metadata).to.have.lengthOf(0);
});
});
我假设您的环境支持asyncwait
。
问题内容: 一个不受欢迎但受支持的python hack(请参阅Guido:https://mail.python.org/pipermail/python- ideas/2012-May/014969.html ),它可以在模块属性上使用,涉及以下内容: 在导入时,此导入的模块将成为类实例: 但是,在Python-2.7中,原始模块内的所有其他导入模块都设置为None。 在Python-3.4中
我得到了一个导入的文本块,但格式并不总是那么完美。之后我会尝试用jquery解决这个问题。所以我开始用 替换 : null null 但替换不起作用。最终的html应该如下所示:
由于使用了容器模式来组织各模块的实例,意味着你可以比较容易的替换掉已经有的服务,以公众号服务为例: <...> $app = Factory::officialAccount($config); $app->rebind('request', new MyCustomRequest(...)); 这里的 request 为 SDK 内部服务名称。
我已经将volley库克隆为 我如何将其作为模块导入到我的android studio项目中,该项目由gradle提供支持,类似于IntelliJ Idea中的“导入模块”选项。
问题内容: 如何枚举所有导入的模块? 例如,我想从以下代码中获取: 问题答案: 仅获取当前模块的所有导入的一种近似方法是检查模块: 这不会返回本地导入或非模块导入(如)。请注意,这将返回,因此,如果您使用的话,将获得原始模块名称。如果要使用别名,则使用yield名称代替。
我是新的Python,我已经安装在C:\ INFO2013-07-08 08:15:47,197server.py:593]默认:"GET/HTTP/1.1"500-INFO2013-07-08 08:28:22,289api_server.py:509]应用所有挂起的事务并保存数据存储INFO2013-07-08 08:28:22,289api_server.py:512]保存搜索索引2013-