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

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

將函數(shù)傳遞給輔助方法

將函數(shù)傳遞給輔助方法

Go
慕桂英546537 2022-05-05 17:32:36
在 Go 中是否可以迭代一組函數(shù)?我的單元測試文件中有這個輔助方法:func helper(t *testing.T, f func(string) bool, stringArray []string, expected bool) {    for _, input := range stringArray {        if f(input) != expected {            t.Errorf("Expected '%v' for string: %v", !expected, input)        }    }}而不是像這樣丑陋地復(fù)制/粘貼一行并更改第二個參數(shù):func Test_isUnique(t *testing.T) {    var valid = []string{"", "b", "ab", "acd", "asdfjkl", "aA"}    var invalid = []string{"aa", "avva", "aaa", "asdfweryhfda", "asdfjkal"}    helper(t, funcA, valid, true)    helper(t, funcB, invalid, false)    helper(t, funcC, valid, true)    helper(t, funcD, invalid, false)    helper(t, funcE, valid, true)    helper(t, funcF, invalid, false)    helper(t, funcG, valid, true)    helper(t, funcH, invalid, false)}相反,我想知道這里是否有一個 for 選項可以將其減少為 4 行主體功能  for f in [funcA, funcB, funcB, funcC, funcD, etc]: // Fix this    helper(t, f, valid, true)    helper(t, f, invalid, false)原諒上面的 python/go 的混合:)
查看完整描述

2 回答

?
繁星點點滴滴

TA貢獻1803條經(jīng)驗 獲得超3個贊

是的,這是可能的。例如,您可以覆蓋任何切片,包括元素類型為函數(shù)類型的切片。只需將您的函數(shù)放入一個切片中:


fs := []func(string) bool{funcA, funcB, funcC, funcD, ...}


for _, f := range fs {

    helper(t, f, valid, true)

    helper(t, f, invalid, false)

}

同樣對于您要實現(xiàn)的目標,表驅(qū)動測試可能更合適。請查看Go Wiki:表驅(qū)動測試,以及Go 博客:使用子測試和子基準測試。


查看完整回答
反對 回復(fù) 2022-05-05
?
楊__羊羊

TA貢獻1943條經(jīng)驗 獲得超7個贊

慣用的方法是使用表驅(qū)動測試:


func TestMyFunction(t *testing.T) {

  valid := []string{"", "b", "ab", "acd", "asdfjkl", "aA"}

  cases := []struct{

    name string,

    f func(string) bool

    input []string

    expected bool

  }{

    {

       "Test func a",

       funcA,

       valid,

       true

    },

    // Other test cases

  }


  for _, tc := range cases {

      t.Run(tc.name, func(t *testing.T) {

          helper(t, tc.func, tc.input, tc.expected)

      })

  }

}

附帶說明:您實際上可以使用Helper函數(shù)顯式標記輔助函數(shù)。這可確保在運行測試時從打印的行信息中排除您的輔助函數(shù):


func helper(t *testing.T) {

  t.Helper()

  // Helper function code

}


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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