我有一个具有以下文件夹结构的 Electron 应用程序:
app/js/
|_ main.js
|_ myClipboard.js
|_ view/
|_ render.js
现在 main.js 调用 myClipboard 使用 nedb(文档存储)在本地存储一些用户数据。我想测试 myClipboard 中的逻辑,因为它会涉及一些条件逻辑。
难点在于 myClipboard 需要 electron 提供的剪贴板模块。以下行在测试设置 (jasmine-node) 中失败:
var clipboard=require('clipboard')
它说找不到“剪贴板”模块。我想测试需要从 Electron 内部运行。
我如何测试它?
我尝试使用 electron-mocha ,但 nedb 使用的异步模块似乎有问题。插入、更新等调用均无法在测试环境中运行,但在我启动我的应用程序时它们运行良好。
我在这里遗漏了什么吗?
最佳答案
说到测试 Electron 应用程序,我喜欢:
- 对一些孤立的模块进行单元测试,
- 做一些端到端测试以查看应用程序是否作为一个整体工作。
现在可以使用 spectron 相当轻松地实现端到端测试.
但是对于单元测试,我们的一些模块可能基于 Electron 包,如果我们简单地使用 Node 运行测试,这些包是不可用的。
您可以使用 proxyquire 轻松地 stub Electron 包.请务必使用 proxyquire @noCallThru
属性或通过像这样的 require('proxyquire').noCallThru()
要求 proxyquire 来阻止对原始依赖项的调用。这将确保您的测试甚至不会尝试要求原始依赖项,从而可以在简单的 Node 进程中运行单元测试。
另一种解决方案是您利用依赖注入(inject)并确保您的模块不依赖于 electron 包引入的任何内容。
关于node.js - 如何在 Electron 应用程序的主进程中对组件进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36351229/