【发布时间】:2017-11-04 07:22:15
【问题描述】:
我正在使用无服务器框架构建一个 RESTful API,以在 AWS 上运行(API Gateway + Lambda + DynamoDB)。这是我的第一个 Node 项目和我的第一个无服务器生产项目,我不知道如何构建它。到目前为止,我有以下
|--Functions
|-----Function1
|--------InternalModule
|-----Function2
|-----Function3
|--------InternalModule
|-----Function4
|--Shared
|-----Module1
|-----Module2
|-----Module3
|--Tests
|-----Functions
|--------Function1
|-----------InternalModule
|--------Function2
|-----------InternalModule
|--------Function3
|-----------InternalModule
|--------Function4
|-----------InternalModule
|-----Modules
|--------Module1
|-----------InternalModule
|--------Module2
|-----------InternalModule
|--------Module3
|-----------InternalModule
我将 API 端点(Lambda 处理程序)保存在 Functions 中。他们中的一些人有他们只使用的内部模块,还有一些人使用来自 Shared 的模块。我想对我的所有模块进行单元测试——内部和共享以及对 lambda 函数的 API 测试。我正在使用 mocha 和 chai 并希望将所有内容集成到管道中,该管道在 git push 上运行 linter 和测试,如果它们成功将 API 部署到适当的阶段。问题是,为了测试每个模块,我必须在我有测试文件的每个文件夹中将 chai 作为本地节点模块,并通过相对路径引用要测试的模块。在大多数情况下,由于嵌套,它看起来非常难看。如果我想测试一个内部模块
Tests/Functions/Function1/InternalModule
我要求它像这样在测试之上
require('../../../../Tests/Functions/Function1/InternalModule')
+ 我必须在每个文件夹中安装 chai 以便可以访问。 mocha 和测试所需的所有依赖项也是如此,我什至没有提到配置。我现在考虑的主要想法是天气与否我应该将所有模块带到一个名为 modules 的文件夹中,并在需要时需要它们 - 最坏的情况
from Functions/Function1
require('../../Modules/Module1')
还将测试文件保存在模块文件夹中并在其中运行它们,但这需要在每个文件夹中安装断言库。我已经阅读了有关 npm 链接和符号链接的信息,但我想跟踪每个文件夹具有哪些依赖项,以便在从无法执行链接的 GitHub 下载干净项目后将它们安装在 CI 环境中(或者我已经整个概念错了吗?)
如果有人能提出更好的解决方案,我将不胜感激!
【问题讨论】:
标签: node.js unit-testing tdd mocha.js serverless-framework