emahiro/b.log

Drastically Repeat Yourself !!!!

同一文字列を繰り返す strings.Repeat

Overview

テストケースで使えそうな strings の機能を教えてもらったので書いておきます。

Strings.Repeat

https://golang.org/pkg/strings/#Repeat はある文字列を指定した回数分繰り返して文字列を生成するメソッドです。

こんな感じで繰り返し出力してくれます。

package main

import (
    "fmt"
    "strings"
)

func main() {
    s := strings.Repeat("s", 10)
    fmt.Println(s)
}
// Output: ssssssssss

ref: https://play.golang.org/p/Dgsy3YjHRUi

テスト書くのに使えそう?

テストケースで文字数の境界値のテストをしたいケースってあると思いますよね。ある関数、メソッドのテストをしたいケースにおいて以下のように使うことができます。

func TestMethodA() (t *testing.T) {
    tests := []struct{}{
        name  string
        input string
        want  bool
    }{
        {name: "case_a", input: strings.Repeat("s", 10), true},
    }

    for _, tt := range tests {
        tt := tt
        t.Run(tt.name, func(t *testing.T){
            // MethodA のテスト
        })
    }
}

別に境界値分のStringを用意してもいいですが、意味のある文字列(JSONとかHTMLとかね)以外の単純な文字列であれば strings.Repeat を使って長い文字列を生成するといいのではないかなと思いました。