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

时间:2016-04-01 08:09:47

标签: node.js unit-testing electron

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

app/js/
     |_ main.js
     |_ myClipboard.js
     |_ view/ 
         |_ render.js

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

这使得困难的原因是myClipboard需要电子提供的剪贴板模块。以下行在测试设置(jasmine-node)中失败:

var clipboard=require('clipboard')

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

我该如何测试?

我尝试使用electron-mocha,但似乎nedb使用的异步模块存在问题。插入,更新等调用都不在测试环境中工作,但是当我调出应用程序时它们工作正常。

我在这里遗漏了什么吗?

1 个答案:

答案 0 :(得分:8)

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

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

现在可以使用spectron轻松实现端到端测试。

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

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

另一种解决方案是利用依赖注入并确保您的模块不依赖于电子包引入的任何内容。