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

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

如何讓 golang 測(cè)試多行輸出匹配

如何讓 golang 測(cè)試多行輸出匹配

Go
互換的青春 2023-06-05 19:49:36
我有以下生成一些字符串輸出的代碼:package formatterimport (    "bytes"    "log"    "text/template"    "github.com/foo/bar/internal/mapper")// map of template functions that enable us to identify the final item within a// collection being iterated over.var fns = template.FuncMap{    "plus1": func(x int) int {        return x + 1    },}// Dot renders our results in dot format for use with graphvizfunc Dot(results []mapper.Page) string {    dotTmpl := `digraph sitemap { {{range .}}  "{{.URL}}"    -> { {{$n := len .Anchors}}{{range  $i, $v := .Anchors}}      "{{.}}"{{if eq (plus1 $i) $n}}{{else}},{{end}}{{end}}    } {{end}}}`    tmpl, err := template.New("digraph").Funcs(fns).Parse(dotTmpl)    if err != nil {        log.Fatal(err)    }    var output bytes.Buffer    if err := tmpl.Execute(&output, results); err != nil {        log.Fatal(err)    }    return output.String()}它生成如下輸出:digraph sitemap {  "http://www.example.com/"    -> {      "http://www.example.com/foo",      "http://www.example.com/bar",      "http://www.example.com/baz"    }}
查看完整描述

3 回答

?
慕蓋茨4494581

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

如果你想忽略格式,你可以使用strings.Fields.


output := strings.Fields(`digraph sitemap {

  "http://www.example.com/"

      -> {

          "http://www.example.com/foo",

          "http://www.example.com/bar",

          "http://www.example.com/baz"

  }

}`)


actual := strings.Fields(Dot(input))


if !equal(output,actual) {

    // ...

}

其中 equal 是比較兩個(gè)切片的簡(jiǎn)單函數(shù)。


查看完整回答
反對(duì) 回復(fù) 2023-06-05
?
Cats萌萌

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

最簡(jiǎn)單的解決方案是在指定預(yù)期輸出時(shí)在測(cè)試中使用相同的縮進(jìn)(與您在模板中使用的相同)。


你有:


output := `digraph sitemap {

  "http://www.example.com/"

      -> {

          "http://www.example.com/foo",

          "http://www.example.com/bar",

          "http://www.example.com/baz"

  }

}`

將其更改為:


    output := `digraph sitemap {

  "http://www.example.com/"

    -> {

      "http://www.example.com/foo",

      "http://www.example.com/bar",

      "http://www.example.com/baz"

    }

}`

請(qǐng)注意,例如,最后一行沒(méi)有縮進(jìn)。當(dāng)您使用原始字符串文字時(shí),包括縮進(jìn)字符在內(nèi)的每個(gè)字符都是原樣文字的一部分。


創(chuàng)建正確的、未縮進(jìn)的原始字符串文字的步驟

畢竟,這完全是一個(gè)非編碼問(wèn)題,而是編輯器自動(dòng)格式化和定義原始字符串文字的問(wèn)題。一種簡(jiǎn)單的正確方法是首先編寫(xiě)一個(gè)空的原始字符串文字,向其添加一個(gè)空行并清除編輯器插入的自動(dòng)縮進(jìn):


    output := `

`

當(dāng)你有這個(gè)時(shí),在結(jié)束反引號(hào)之前復(fù)制粘貼正確的輸入,例如:


    output := `

digraph sitemap {

  "http://www.example.com/"

    -> {

      "http://www.example.com/foo",

      "http://www.example.com/bar",

      "http://www.example.com/baz"

    }

}`

最后一步,從原始字符串文字的第一行刪除換行符,您將獲得正確的原始字符串文字:


    output := `digraph sitemap {

  "http://www.example.com/"

    -> {

      "http://www.example.com/foo",

      "http://www.example.com/bar",

      "http://www.example.com/baz"

    }

}`

一旦你有了這個(gè),gofmt編輯器的運(yùn)行或自動(dòng)格式化就不會(huì)再混亂了。


更新:


我檢查了你更新的測(cè)試結(jié)果,在你得到的結(jié)果中,第一行之后有一個(gè)空格:digraph sitemap {,第三行之后也有一個(gè)空格:-> {,但是你沒(méi)有將它們添加到你的預(yù)期輸出中。也可以將它們添加到您的預(yù)期輸出中,或者從模板中刪除這些空格!比較字符串時(shí),它們是按字節(jié)比較的,每個(gè)字符(包括空格)都很重要。


要從模板中刪除這些額外的空格:


    dotTmpl := `digraph sitemap { {{- range .}}

  "{{.URL}}"

    -> { {{- $n := len .Anchors}}{{range  $i, $v := .Anchors}}

      "{{.}}"{{if eq (plus1 $i) $n}}{{else}},{{end}}{{end}}

    } {{end}}

}`

注意使用{{-。這是為了修剪模板操作周?chē)目臻g,這是在Go 1.6中添加的。


查看完整回答
反對(duì) 回復(fù) 2023-06-05
?
幕布斯6054654

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

問(wèn)題是有一個(gè)額外的空間。在那之后的格式化文本中{似乎是你的問(wèn)題。您可以通過(guò)將格式字符串更改為此來(lái)修復(fù)它


`digraph sitemap {{{range .}}

  "{{.URL}}"

    -> {{{$n := len .Anchors}}{{range  $i, $v := .Anchors}}

      "{{.}}"{{if eq (plus1 $i) $n}}{{else}},{{end}}{{end}}

    }{{end}}

}`


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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