亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

構建go項目時如何忽略模擬包?

構建go項目時如何忽略模擬包?

Go
qq_花開花謝_0 2022-11-23 20:33:55
如您所知,在構建 go 項目時會忽略 _test.go,而 mock 包僅由 _test.go 文件導入,因此如果這些文件未包含在構建的項目中,為什么只包含 mock 包。所以想知道如何在構建項目時忽略其中的文件。嘗試將后綴 _test.go 添加到 mock 包中的文件,但在使用時出現錯誤“MockStruct not declared by package mock”。還嘗試使用構建約束//go:build ignore得到同樣的錯誤“MockStruct 不是由包 mock 聲明的”我在這里錯過了什么嗎?使用構建約束是唯一的方法嗎?
查看完整描述

1 回答

?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

如果您的 mock 僅用于測試文件,則在構建項目時不會導入它。Go 編譯器在構建時不包含測試及其依賴項。

以此為例:

  • 構建以下代碼;

  • 檢查其二進制大?。?/p>

  • 刪除sample_test.go文件;

  • 再次構建并檢查其二進制大?。?/p>

測試前后的大小應該沒有什么不同,這證明構建中沒有包含測試的任何內容。

示例.go

package main


import "fmt"


type SampleInterface interface {

    DoSomething()

}


type Sample struct {

    Name string

}


func main() {

    s := Sample{}

    CallDoSomething(&s)

}


func (s *Sample) DoSomething() {

    fmt.Println("Do Something implementation ", s.Name)

}


func CallDoSomething(si SampleInterface) {

    si.DoSomething()

}

樣本測試.go


package main


import (

    "fmt"

    "testing"

)


type sample_mock struct {

    Name string

}


func (s *sample_mock) DoSomething() {

    fmt.Println("Do Something implementation", s.Name)

}


func TestCallDoSomething(t *testing.T) {

    s := sample_mock{

        Name: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",

    }

    CallDoSomething(&s)

}


查看完整回答
反對 回復 2022-11-23
  • 1 回答
  • 0 關注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號