【发布时间】:2022-08-08 15:59:12
【问题描述】:
我想创建一个 CI/CD,所以,我正在使用 Github-Actions 设置单元测试。 因此,我编写了一些测试,它们在我的计算机上运行良好,但是当我将代码推送到 github 并开始测试(在 Github-Actions 上)时,我的测试似乎没有连接到 MongoDB。你能帮忙吗?
这是我电脑的输出:
Auth/User Service Unit Tests
CRUD functionality
✔ Should successfully add an user (1045ms)
✔ Should successfuly find an user
✔ Should successfuly modify an user
✔ Should successfuly delete an user (69ms)
JWT functionalities
✔ Should successfully generate a new access token (JWT) and add it to whitelist
✔ Should successfully remove an access token (JWT) from whitelist
✔ Should successfuly fins an accessToken in whiteList
Offer Service Unit Test
CRUD Offer functionalities
✔ Should successfuly create an offer (49ms)
✔ Should successfuly retrieve an offer
✔ Should successfuly modify an offer
✔ Success if offer is deleted (And NotFound throw) (58ms)
这是 GitHub-Actions 的输出:
Auth/User Service Unit Tests
CRUD functionalities
1) Should successfully add an user
2) Should successfuly find an user
3) Should successfuly modify an user
4) Should successfuly delete an user
JWT functionalities
5) Should successfully generate a new access token (JWT) and add it to whitelist
6) Should successfully remove an access token (JWT) from whitelist
7) Should successfuly fins an accessToken in whiteList
Offer Service Unit Test
CRUD Offer functionalities
8) Should successfuly create an offer
9) Should successfuly retrieve an offer
10) Should successfuly modify an offer
11) Success if offer is deleted (And NotFound throw)
0 passing (10s)
11 failing
1) Auth/User Service Unit Tests
CRUD functionalities
Should successfully add an user:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure \"done()\" is called; if returning a Promise, ensure it resolves. (/home/runner/work/API/API/src/test/auth.test.js)
at listOnTimeout (internal/timers.js:557:17)
at processTimers (internal/timers.js:500:7)
这是我的工作流程:
name: Node.js CI
on:
push:
branches: [ \"master\", \"unit-test\" ]
pull_request:
branches: [ \"master\", \"unit-test\" ]
env:
DB_URL: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
EMAIL: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
EMAIL_PWD: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TWILIO_SID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TWILIO_AUTH: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TWILIO_NUMBER: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
jobs:
build:
runs-on: windows-latest
strategy:
matrix:
node-version: [12.x, 14.x, 16.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: \'npm\'
- run: npm ci
- run: npm install mocha dotenv
- run: npm test
- run: npm start
在这里,此代码中没有 MongoDB 的“导入”。但是,我试过这个:
- name: Start MongoDB 6.0.7
uses: supercharge/mongodb-github-action@1.7.0
with:
mongodb-version: 6.0.7
但我有这个错误:
Run supercharge/mongodb-github-action@1.7.0
Error: Container action is only supported on Linux
请问你有什么解决办法吗? :)
-
您是否尝试过在基于 linux 的运行器上运行您的工作流程?
-
我试过了,但是我遇到了这个错误:错误:超过了 2000 毫秒的超时。对于异步测试和钩子,确保调用了“done()”;如果返回 Promise,请确保它已解决。 (/home/runner/work/API/API/src/test/auth.test.js) 在 listOnTimeout (internal/timers.js:557:17) 在 processTimers (internal/timers.js:500:7)
标签: node.js mongodb unit-testing github-actions