Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Uji modul go tempatan yang diimport menggunakan arahan ganti dan gunakan direktori vendor dalam folder rumah

Uji modul go tempatan yang diimport menggunakan arahan ganti dan gunakan direktori vendor dalam folder rumah

WBOY
WBOYke hadapan
2024-02-10 16:27:11712semak imbas

测试使用替换指令导入的本地 go 模块并使用主文件夹中的供应商目录

Dalam artikel ini, editor PHP Youzi akan memperkenalkan cara menggunakan arahan gantian untuk mengimport modul go secara tempatan dan menggunakan direktori pembekal dalam folder utama. Arahan penggantian ialah ciri berkuasa dalam bahasa Go, yang membolehkan kami memperkenalkan modul tempatan dengan lebih fleksibel semasa proses pembangunan dan meningkatkan kebolehselenggaraan dan kebolehgunaan semula kod. Melalui panduan artikel ini, saya percaya bahawa semua orang boleh menguasai teknik ini dengan mudah dan mengembangkan bahasa Go dengan lebih cekap. Seterusnya, mari kita lihat langkah-langkah khusus!

Kandungan soalan

pengeksport saya ialah modul tempatan saya dan saya mengimportnya ke dalam modul utama menggunakan replace. Saya ingin menjalankan ujian dalam myexporter menggunakan folder vendor pada akar projek utama.

Struktur direktori projek saya adalah seperti ini

bitbucket.com
|__agent
     |__exporter
     |     |__myexporter
     |            |__factory.go
     |               factory_test.go
     |               go.mod
     |__runner
     |     |__main.go
     |        main_test.go
     |__vendor
     |     |__bitbucket.com/agent/exporter/myexporter
     |                   |__factory.go
     |__go.mod

fail go.mod pengeksport saya

module bitbucket.com/agent/exporter/myexporter

fail agen go.mod mempunyai

module bitbucket.com/agent

require (
    bitbucket.com/agent/exporter/myexporter
)

replace bitbucket.com/agent/exporter/myexporter => ./exporter/myexporter

Soalan saya ialah

  1. Jika saya menjalankan "go test -mod=vendor ./..." ia hanya menguji dalam main_test run
  2. Jika saya menggunakan "go test -mod=vendor exporter/myexporter" saya mendapat "package exporter/myexporter is not in goroot"
  3. Jika saya menjalankan "go test -mod=vendor bitbucket.com/agent/exporter/myexporter" tiada fail ujian
  4. Jika saya beralih ke direktori pengeksport/pengeksport saya dan kemudian jalankan dengan "go test ./..." ia berfungsi, tetapi bukan "go test -mod=vendor ./..." kerana direktori vendor berada dalam Root ejen direktori 李>
  5. Jika saya menjalankan "go test -mod=vendor ./exporter/myexporter/" saya mendapat "Modul utama (bitbucket.com/agent) tidak mengandungi pakej bitbucket.com/agent/exporter/myexporter"

Binaan tidak mempunyai akses kepada pakej go, ia bergantung pada folder vendor, dan perkara yang sama berlaku untuk ujian. Saya tidak mahu berbilang salinan kebergantungan wujud dalam folder vendor lain di dalam myexporter. Adakah terdapat sebarang cara untuk menjalankan ujian dalam myexporter menggunakan folder ejen/vendor?

Penyelesaian

Adakah terdapat sebarang cara untuk menjalankan ujian dalam MyExporter menggunakan folder ejen/penjual?

Tidak.

Anda mesti menguji di mana pengeksport saya. Setelah diberikan, hanya kod sebenar yang diberikan.

Satu-satunya perkara yang mungkin ialah menggabungkan modul.

Ia benar-benar bermuara kepada perkara ini: Jika anda perlu menguji kedua-dua modul secara selari/konsisten, ia bukanlah dua modul yang berbeza dengan kitaran hayat berbeza. Jika ini adalah perkara yang berasingan dengan kitaran hayat yang berbeza, anda boleh menguji yang pertama, pastikan ia berfungsi dan membekalkannya kepada yang kedua. Kemudian uji yang kedua, termasuk penggunaannya yang pertama, tetapi jangan jalankan ujian pertama kerana ia tidak lagi diperlukan.

Atas ialah kandungan terperinci Uji modul go tempatan yang diimport menggunakan arahan ganti dan gunakan direktori vendor dalam folder rumah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam