【问题标题】:how to unit test components in main process of an electron app?如何在电子应用程序的主进程中对组件进行单元测试?
【发布时间】:2016-04-01 08:09:47
【问题描述】:

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

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.2.7/ 时它们就消失了
  • 我认为我使用的是 0.9 版..

标签: node.js unit-testing electron


【解决方案1】:

说到测试电子应用,我喜欢:

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

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

但对于单元测试,我们的一些模块可能基于 electron 包,如果我们只是使用 node 运行测试,则无法使用。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-01
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多