SpringCloud 服务器端(nodejs)
2023-12-11 17:31 更新
因为我们要运行测试,所以我们可以执行:
$ npm test
但是,出于学习目的,让我们将其分为几部分:
# Stop docker infra (nodejs, artifactory) $ ./stop_infra.sh # Start docker infra (nodejs, artifactory) $ ./setup_infra.sh # Kill & Run app $ pkill -f "node app" $ nohup node app & # Prepare environment variables $ SC_CONTRACT_DOCKER_VERSION="..." $ APP_IP="192.168.0.100" $ APP_PORT="3000" $ ARTIFACTORY_PORT="8081" $ APPLICATION_BASE_URL="http://${APP_IP}:${APP_PORT}" $ ARTIFACTORY_URL="http://${APP_IP}:${ARTIFACTORY_PORT}/artifactory/libs-release-local" $ CURRENT_DIR="$( pwd )" $ CURRENT_FOLDER_NAME=${PWD##*/} $ PROJECT_VERSION="0.0.1.RELEASE" # Execute contract tests $ docker run --rm -e "APPLICATION_BASE_URL=${APPLICATION_BASE_URL}" -e "PUBLISH_ARTIFACTS=true" -e "PROJECT_NAME=${CURRENT_FOLDER_NAME}" -e "REPO_WITH_BINARIES_URL=${ARTIFACTORY_URL}" -e "PROJECT_VERSION=${PROJECT_VERSION}" -v "${CURRENT_DIR}/contracts/:/contracts:ro" -v "${CURRENT_DIR}/node_modules/spring-cloud-contract/output:/spring-cloud-contract-output/" springcloud/spring-cloud-contract:"${SC_CONTRACT_DOCKER_VERSION}" # Kill app $ pkill -f "node app"
将会发生的是通过bash脚本:
- 基础设施将被建立(MongoDb,Artifactory)。在现实生活中,您只需运行带有模拟数据库的NodeJS应用程序。在此示例中,我们想展示如何立即受益于Spring Cloud Contract。
由于这些限制,合同也代表了有状态的情况
- 第一个请求是
POST
,它导致数据被插入到数据库中 - 第二个请求是
GET
,它返回带有一个先前插入的元素的数据列表
- 第一个请求是
- NodeJS应用程序将启动(在端口
3000
上) 合同测试将通过Docker生成,并且测试将针对正在运行的应用程序执行
- 合同将从
/contracts
文件夹中提取。 - 测试执行的输出在
node_modules/spring-cloud-contract/output
下可用。
- 合同将从
- 存根将被上传到Artifactory。您可以在http:// localhost:8081 / artifactory / libs-release-local / com / example / bookstore / 0.0.1.RELEASE /中检出它们。存根将在这里http:// localhost:8081 / artifactory / libs-release-local / com / example / bookstore / 0.0.1.RELEASE / bookstore-0.0.1.RELEASE-stubs.jar。
要查看客户端的外观,请查看“ Stub Runner Docker”部分。
以上内容是否对您有帮助:
更多建议: