gpt4 book ai didi

mongodb - 如何使用 dockerfile 创建 MongoDB 数据库并使用该数据库中的数据来运行测试用例

转载 作者:行者123 更新时间:2023-12-01 22:35:54 25 4
gpt4 key购买 nike

我有一个 Go 项目,其中包含一个测试用例文件 main_test.go 用于在构建项目并创建可执行文件后测试命令。

package cmd

import (
"testing"
"os"
"os/exec"
)

func TestCommand(t *testing.T) {
rootCmd, _ := exec.LookPath("executable")

storeCmd := &exec.Cmd {
Path: rootCmd,
Args: []string{ rootCmd, "store", "--mongo", "<path_to_mongo_config_file>"},
Stdout: os.Stdout,
Stderr: os.Stdout,
}

if err := storeCmd.Run(); err != nil {
t.Error("Error", err)
}
}
该函数从 mongo 配置文件中获取不同的配置数据,例如主机名、用户名、密码等。如果我在本地机器上运行该文件,一切正常。但是在docker中运行时,无法连接到MongoDB。我尝试了很多事情,比如使用 ubuntu 基础镜像,然后安装 golang 和 mongodb 包来完成工作。
所有软件包都已安装,但 MongoDB 服务器无法启动,因此我无法在 Docker 容器内的 MongoDB 中创建要使用配置文件的数据库。
如何编写一个 dockerfile 来自动创建一个 mongoDB 数据库,将一些数据插入其中,然后进行测试。
这是 docker 文件
FROM ubuntu

RUN apt-get update
RUN apt-get upgrade
RUN apt-get install -y golang mongodb git

WORKDIR /go/src/path
COPY . .

RUN go build

ENTRYPOINT [ "mongo" ]
CMD [ "use testdb \
db.testcol.insert({name: 'test1', address: 'testadd'})"]

RUN go test -v
Google Cloud Platform 上的 CI/CD 管道需要此 dockerfile,因此所有命令(从创建数据库到测试)只需在 dockerfile 中指定。不允许人机交互。我们无法运行 docker run 之类的命令

最佳答案

看看Dockertest ,它并没有完全按照你的方式做,但它应该适合你。它允许您运行一个 docker 容器(都在 TestMain() 内),您现在可以可靠地对其进行测试。
从那里你可以运行像 db.Exec() 这样的东西。插入你想要的。

关于mongodb - 如何使用 dockerfile 创建 MongoDB 数据库并使用该数据库中的数据来运行测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63189943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com