gpt4 book ai didi

node.js - 如何在 Electron 应用程序的主进程中对组件进行单元测试?

转载 作者:搜寻专家 更新时间:2023-10-31 23:00:28 28 4
gpt4 key购买 nike

我有一个具有以下文件夹结构的 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com