【问题标题】:I am getting an an error when running workflow in github在 github 中运行工作流时出现错误
【发布时间】:2021-06-16 09:30:10
【问题描述】:

当我在 bash 或命令终端上运行我的单元测试时,它们都通过了,但是当我尝试使用 GitHub 工作流程运行它时,它给了我一个错误,它说: 'mocha' 未被识别为内部或外部命令。

我不知道该怎么做才能让它工作。

我的包裹

{
  "name": "api",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www",
    "test": "mocha --recursive --exit"
  },
  "dependencies": {
    "bcryptjs": "^2.4.3",
    "cookie-parser": "~1.4.4",
    "cors": "^2.8.5",
    "debug": "~2.6.9",
    "express": "~4.16.1",
    "express-session": "^1.17.1",
    "express-validator": "^5.3.1",
    "http-errors": "~1.6.3",
    "jade": "~1.11.0",
    "mongoose": "^5.11.18",
    "morgan": "~1.9.1",
    "multer": "^1.4.2",
    "passport": "^0.4.1",
    "passport-local": "^1.0.0"
  }
}

我的测试文件

const expect = require('chai').expect;
const request = require('supertest');


const app = require('../app');

describe('Register users 1 & 2', () => {
    it('Test user 1 succesfully registered', (done) => {
        request(app).post('/users/register')
        .send({username: 'Tester1', password: 'tester'})
        .then((res) => {
            const body = res.body;
            expect(body).to.contain.property('response');
            done();
        })
        .catch((err) => done(err))
    })

    it('Test user 2 succesfully registered', (done) => {
        request(app).post('/users/register')
        .send({username: 'qwer', password: 'tester'})
        .then((res) => {
            const body = res.body;
            expect(body).to.contain.property('response');
            done();
        })
        .catch((err) => done(err))
    })

    
})


describe('Login user 1', () => {
    it('Test user 1 succesfully logged in', (done) => {
        request(app).post('/login')
        .send({username: 'Tester1', password: 'tester'})
        .then((res) => {
            const body = res.body;
            expect(body).to.contain.property('_id');
            expect(body).to.contain.property('username');
            expect(body).to.contain.property('password');
            done();
        })
        .catch((err) => done(err))
    })
})


describe('Following user', () => {
    it('User 1 login', (done) => {
        request(app).post('/login')
        .send({username: 'Tester1', password: 'tester'})
        .then((res) => {
            const body = res.body;
            expect(body).to.contain.property('_id');
            expect(body).to.contain.property('username');
            expect(body).to.contain.property('password');
            done();
        })
        .catch((err) => done(err))

        request(app).post('/follow/qwer')
    })
})

我在 github 的工作流中遇到的错误

Run npm run test

> api@0.0.0 test D:\a\instantgram.github.io\instantgram.github.io\api
> mocha --recursive --exit

'mocha' is not recognized as an internal or external command,
operable program or batch file.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! api@0.0.0 test: `mocha --recursive --exit`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the api@0.0.0 test script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\npm\cache\_logs\2021-03-18T20_50_41_019Z-debug.log
Error: Process completed with exit code 1.

【问题讨论】:

  • 你的依赖项中没有 mocha
  • 我已经安装了 Mocha,但它没有显示在我的依赖项中。
  • 尝试手动添加

标签: javascript unit-testing mocha.js chai github-actions


【解决方案1】:

当我在 bash 或命令终端上运行我的单元测试时,它们都通过了,但是当我尝试使用 GitHub 工作流运行它时,它给了我一个错误,上面写着:'mocha' 不被识别为内部或外部命令。

您需要将 mocha 添加到您的依赖项中,以便您的 github 操作可以在执行测试之前安装它。

【讨论】:

    猜你喜欢
    • 2021-10-29
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多