【问题标题】:Connect MongoDB (mongoose) to GitHub-Actions将 MongoDB (mongoose) 连接到 GitHub-Actions
【发布时间】: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


【解决方案1】:

我发现了这个问题。

起源是我的mongodb有一个IP白名单,所以github无法连接。

在这种情况下使用 github 操作的最佳方式可能是使用 Docker。

【讨论】:

    猜你喜欢
    • 2020-01-14
    • 2023-02-14
    • 2019-03-14
    • 2018-07-10
    • 2017-01-18
    • 1970-01-01
    • 2021-09-16
    • 2018-01-12
    • 2020-05-05
    相关资源
    最近更新 更多