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

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

如何在 golang 中對(duì) os/exec 的 cmd.Start() 進(jìn)行單元測(cè)試?

如何在 golang 中對(duì) os/exec 的 cmd.Start() 進(jìn)行單元測(cè)試?

Go
holdtom 2022-10-31 15:53:13
我試圖在單元測(cè)試中模擬 cmd.Start() 并且無(wú)法弄清楚我們需要模擬整個(gè)函數(shù)還是可以模擬 cmd.Start() 函數(shù)?有人可以幫助我嗎?    package main        import (        "bytes"        "fmt"        "os/exec"    )        var execCommand = exec.Command    func main() {        stdout := &bytes.Buffer{}        cmd := execCommand("cmd")        syscall.SysProcAttr := &syscall.SysProcAttr{CmdLine: "/S /c C:\\Temp\\test.exe /S C:\\Temp\\test.log"}        cmd.Stdout = stdout            errs := cmd.Start()        if errs != nil {            fmt.Println("command run fialed :", errs)            fmt.Println("OUTPUT :", stdout.String())        }        }單元測(cè)試:func fakeExecCommand(command string, args ...string) *exec.Cmd {    cs := []string{"-test.run=TestExecCommandHelper", "--", command}    cs = append(cs, args...)    cmd := exec.Command(os.Args[0], cs...)    es := strconv.Itoa(mockedExitStatus)    cmd.Env = []string{"GO_WANT_HELPER_PROCESS=1", "STDOUT=" + mockedStdout, "EXIT_STATUS=" + es}    return cmd}
查看完整描述

1 回答

?
倚天杖

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

我無(wú)法模擬 cmd.Start(),無(wú)論如何我們都不能這樣做,下面是對(duì)我有用的方式。


    func fakeExecCommand(command string, args ...string) *exec.Cmd {

            cs := []string{"-test.run=TestExecCommandHelper", "--", "ENTER YOUR COMMAND HERE"}

            cs = append(cs, args...)

            cmd := exec.Command(os.Args[0], cs...)

            es := strconv.Itoa(mockedExitStatus)

            cmd.Env = []string{"GO_WANT_HELPER_PROCESS=1", "STDOUT=" + mockedStdout, "EXIT_STATUS=" + es}

            return cmd

        }

    

    

    

        func TestPrintDate(t *testing.T) {

            mockedExitStatus = 1

            mockedStdout = "Sun Aug 201"

            execCommand = fakeExecCommand

            defer func() { execCommand = exec.Command }()

            expDate := "Sun Aug 20"

        

            out, _ := printDate()

            if string(out) != expDate {

                t.Errorf("Expected %q, got %q", expDate, string(out))

            }

        }


/////////CODE///////


    func printDate() ([]byte, error) {

        cmd := execCommand("date")

        out, err := cmd.CombinedOutput()

        return out, err

    }


查看完整回答
反對(duì) 回復(fù) 2022-10-31
  • 1 回答
  • 0 關(guān)注
  • 154 瀏覽
慕課專(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)