第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何模擬 gRPC api 以與 golang 進(jìn)行集成測(cè)試

如何模擬 gRPC api 以與 golang 進(jìn)行集成測(cè)試

Go
炎炎設(shè)計(jì) 2023-05-22 15:57:49
全部我有一個(gè)用 go 編寫(xiě)的服務(wù),它通過(guò) gRPC 協(xié)議與其他幾個(gè)服務(wù)通信。我想為我的服務(wù)編寫(xiě)集成測(cè)試,但是我不可能使用真正的依賴項(xiàng)。所以,我需要以某種方式模擬依賴關(guān)系。對(duì)我來(lái)說(shuō),一個(gè)完美的場(chǎng)景是這樣的:我可以運(yùn)行模擬服務(wù)器并將其地址傳遞給我的應(yīng)用程序而不是真正的依賴項(xiàng)我可以注冊(cè)對(duì)依賴服務(wù)的特定調(diào)用的預(yù)期響應(yīng)我可以重置模擬服務(wù)器以在測(cè)試用例后拆除數(shù)據(jù)。我嘗試使用https://github.com/jekiapp/gripmock但它不支持所有的 protobuff 語(yǔ)法。什么可以幫助解決我的問(wèn)題?也許我完全錯(cuò)了,并且有用于通信 gRPC 的服務(wù)集成測(cè)試的最佳實(shí)踐
查看完整描述

2 回答

?
慕田峪7331174

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個(gè)贊

您可以通過(guò)在 docker-compose 文件中定義所有服務(wù)來(lái)啟動(dòng)您的環(huán)境。您還應(yīng)該在 docker-compose 文件中添加要測(cè)試的服務(wù)。啟動(dòng)后,您可以在要測(cè)試的服務(wù)中運(yùn)行集成測(cè)試。


示例 docker-compose 文件:


version: '2.2'


services:

  service-you-want-to-test:

    build: .

    image: service-you-want-to-test

    container_name: service-you-want-to-test

    environment:

      - ENVIRONMENT=${ENVIRONMENT}

      - REDIS_ADDRESSES=[redis:6379]

      - SERVICE_YOU_DEPEND_ON_ENDPOINT=service-you-depend-on:8091

      - DB_HOST=mysql

      - DB_USER=root

    links:

      - redis

      - mysql

      - service-you-depend-on

    depends_on:

      mysql:

        condition: service_healthy

    ports:

      - 8090:8090


  service-you-depend-on:

    image: service-you-depend-on:latest

    container_name: service-you-depend-on

    environment:

      - DB_HOST=mysql

      - DB_USER=root

    links:

      - redis

      - mysql

    depends_on:

      mysql:

        condition: service_healthy

    ports:

      - 8091:8091


  mysql:

    image: mysql:5.7

    container_name: mysql

    environment:

      MYSQL_ALLOW_EMPTY_PASSWORD: "true"

    volumes:

    - ./.docker/mysql/init.sql:/docker-entrypoint-initdb.d/init.sql:ro

    - ./.docker/mysql/healthcheck-5.7:/var/www/healthcheck

    healthcheck:

      test: "/var/www/healthcheck"

      interval: 5s

      timeout: 5s

      retries: 5

    ports:

    - 3306:3306


  redis:

    image: redis:3.2

    container_name: redis

    ports:

      - 6379:6379

要設(shè)置集成環(huán)境,您可以使用以下命令:


CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

docker build -t service-you-want-to-test .

docker-compose up -d redis mysql

docker-compose up -d --build service-you-want-to-test

運(yùn)行上面的命令后,您可以通過(guò)命令行執(zhí)行集成測(cè)試:


go test -v path/to/integration_tests/...

因此,您還應(yīng)該將依賴的服務(wù)添加到 docker-compose 文件中,這樣您就可以在集成測(cè)試中實(shí)際向它們發(fā)送請(qǐng)求。請(qǐng)務(wù)必將這些服務(wù)端點(diǎn)添加到您的環(huán)境變量中,以便您可以覆蓋將請(qǐng)求發(fā)送到的端點(diǎn)。


為了重置您的數(shù)據(jù),例如您的數(shù)據(jù)庫(kù),您可以編寫(xiě)固定裝置。fixtures 只是幫助函數(shù)來(lái)重置數(shù)據(jù)庫(kù)、緩存等的數(shù)據(jù)。


查看完整回答
反對(duì) 回復(fù) 2023-05-22
?
桃花長(zhǎng)相依

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊

在這種情況下您可以使用的另一個(gè)替代工具是Traffic Parrot

我們最近在我們的服務(wù)虛擬化工具中添加了對(duì) gRPC 的支持,該工具包括一個(gè)可用于定義模擬行為的用戶界面。

有一個(gè)教程介紹如何在給定原型文件的情況下通過(guò)網(wǎng)絡(luò)模擬 gRPC 響應(yīng)。

您還可以在文檔中找到有關(guān)如何通過(guò)網(wǎng)絡(luò)進(jìn)行記錄和重放的信息。

http://img1.sycdn.imooc.com//646b209900014ece06540415.jpg

http://img1.sycdn.imooc.com//646b20a400011e4006120301.jpg

http://img1.sycdn.imooc.com//646b20ae0001443805770283.jpg

查看完整回答
反對(duì) 回復(fù) 2023-05-22
?
暮色呼如

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊

我只是合并了一些補(bǔ)丁來(lái)覆蓋大部分 protobuf 聲明。我建議你檢查一下。

已知問(wèn)題:它仍然無(wú)法解析具有方法體聲明的 protobuf


查看完整回答
反對(duì) 回復(fù) 2023-05-22
  • 2 回答
  • 0 關(guān)注
  • 196 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)