github.com/goravel/framework@v1.13.9/support/debug/dump_test.go (about)

     1  package debug
     2  
     3  import (
     4  	"bytes"
     5  	"os"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  func redirectStdout(fn func()) ([]byte, error) {
    12  	f, err := os.CreateTemp("", "stdout")
    13  	if err != nil {
    14  		return nil, err
    15  	}
    16  	defer os.Remove(f.Name())
    17  	defer f.Close()
    18  
    19  	orig := os.Stdout
    20  	os.Stdout = f
    21  	fn()
    22  	os.Stdout = orig
    23  
    24  	return os.ReadFile(f.Name())
    25  }
    26  
    27  func TestDump(t *testing.T) {
    28  	buf, err := redirectStdout(func() {
    29  		Dump("foo")
    30  	})
    31  	assert.NoError(t, err)
    32  	assert.Equal(t, `(string) (len=3) "foo"
    33  `, string(buf))
    34  }
    35  
    36  func TestFDump(t *testing.T) {
    37  	var buf bytes.Buffer
    38  	w := &buf
    39  
    40  	FDump(w, "foo")
    41  
    42  	assert.Equal(t, `(string) (len=3) "foo"
    43  `, buf.String())
    44  }
    45  
    46  func TestSDump(t *testing.T) {
    47  	assert.Equal(t, `(string) (len=3) "foo"
    48  `, SDump("foo"))
    49  }