如何在电子应用程序的主要过程中对组件进行单元测试?

ind*_*eel 4 unit-testing node.js electron

我有一个具有以下文件夹结构的电子应用程序:

app/js/
     |_ main.js
     |_ myClipboard.js
     |_ view/ 
         |_ render.js
Run Code Online (Sandbox Code Playgroud)

现在main.js调用myClipboard使用nedb(文档存储)在本地存储一些用户数据.我想测试myClipboard中的逻辑,因为它将涉及一些条件逻辑.

是什么让这很困难是myClipboard需要电子提供的剪贴板模块.以下行在测试设置(jasmine-node)中失败:

var clipboard=require('clipboard')
Run Code Online (Sandbox Code Playgroud)

它说无法找到'剪贴板'模块.我想测试需要从内部电子运行.

我该如何测试?

我尝试使用电子摩卡,但它似乎与nedb使用的异步模块有问题.在插入,更新等调用都不在测试环境中工作,但是当我调出应用程序时它们工作正常.

我在这里错过了什么吗?

ray*_*jes 8

当涉及到测试电子应用时,我喜欢:

  • 要对一些隔离模块进行单元测试
  • 进行一些端到端测试以查看应用程序是否作为一个整体工作.

现在可以使用光谱仪轻松实现端到端测试.

但是对于单元测试,我们的一些模块可能基于电子包,如果我们只是用节点运行测试就不可用.

您可以使用proxyquire轻松存根​​电子包.请务必阻止调用需要具有proxyquire @noCallThru属性的原始依赖项,或者要求像这样的proxyquire require('proxyquire').noCallThru().这将确保您的测试甚至不会尝试要求原始依赖项,从而可以在简单的节点过程中运行单元测试.

另一个解决方案是利用依赖注入并确保您的模块不依赖于电子包引入的任何东西.