【问题标题】:How to execute Node .JS APIs test cases using Jenkinsfile如何使用 Jenkinsfile 执行 Node .JS API 测试用例
【发布时间】:2018-04-24 01:04:54
【问题描述】:

我是詹金斯的新手。我有一个小型 Node .JS 服务器,测试用例是使用 Mocha 编写的(集成测试用例,而不是单元测试用例)。我正在尝试使用 Jenkins 为此创建一个 CI 管道。我的 Jenkinsfile 如下所示:

 #!/usr/bin/env groovy

pipeline {

    agent {
        docker {
            image 'node'
            args '-u root'
        }
    }

    stages {
        stage('Build') {
            steps {
                echo 'Installing Dependencies...'
                sh 'npm install'
            }
        }
        stage('Run') {
            steps {
                echo 'Starting application...'
                sh 'npm start'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing...'
                sh 'npm test'
            }
        }
    }
 }

在运行阶段,使用命令 node server.js 启动服务器,一旦服务器启动,我希望针对该服务器执行测试用例。但我注意到,Jenkins 从不执行测试阶段,因为服务器仍然处于启动状态(这就是我想要的),并且没有退出它。 如何启动服务器并针对该服务器运行测试阶段?

【问题讨论】:

    标签: node.js git api jenkins continuous-integration


    【解决方案1】:

    您应该在运行服务器之前运行测试。测试不应依赖于正在运行的服务器。测试应该需要任何需要和测试,然后你应该运行服务器。

    https://github.com/jenkinsci/pipeline-examples/tree/master/jenkinsfile-examples/nodejs-build-test-deploy-docker-notify

    【讨论】:

    • 非常感谢您的回答。在这里,我尝试为服务器 API 执行集成测试用例。所以它需要启动服务器,然后针对服务器运行测试用例。有更好的方法吗?
    • 是的,您可以在测试文件中要求应用程序并向其发出请求。 chai.request(app) .get('/')
    • 非常感谢您的回复。我已经用不同的方法解决了。
    【解决方案2】:

    我通过创建单独的构建作业然后将它们链接在一起解决了这个问题。在运行阶段,我使用“cd”命令将目录更改为构建文件夹并启动服务器。在测试阶段,我也是这样做的,但是,在运行阶段启动的服务器上执行测试用例。

    感谢大家的投入。

    【讨论】:

    • 更有用的是发布您的 Jenkinsfile,以便其他人也可以看到您是如何修复它的
    • 我没有创建 jenkinsfile。构建作业本身具有配置。我在 Jenkins 中创建了多个构建作业,用于设置、构建、运行等。并通过 Jenkins Pipeline 将它们组合起来。有关构建作业和管道的更多信息,请参阅此链接:jenkins.io/pipeline/getting-started-pipelines
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    • 2023-03-23
    • 2020-06-23
    • 2012-07-04
    相关资源
    最近更新 更多