2016-07-20 3 views
0

내가 Boom을 스텁과 올바른 매개 변수와 함께 호출 된 확인하려면 어떻게Golang 가져 오기 기능 테스트?

package main 

import "foobar" 

func moo() { 
    foobar.Boom("!") 
} 

func main() { 
    moo() 
} 

main.go에있는 말?

+0

'func moo (boom func(), s string)와 같은 종속성을 전달해야합니다. 'https://play.golang.org/p/CV14zqZvOk를 참조하십시오. – Plato

답변

1

Go-way는 인터페이스를 사용하는 것입니다. foobar 패키지를 변경할 수없는 경우에도 마찬가지입니다.

1)는 foobar의 변수를 추가)는 머

func moo(b Boomer) { b.Boom("!") } 

3

을 허용하는지)를 머 인터페이스

type Boomer interface{ 
    Boom(string) 
} 

2) 변화 무를 (생성

놀이터에서 나는 다음과 같은 단점을 사용합니다. 구조. 그러나 통근 패키지 대신 당신이 후 테스트 부머

type testboomer struct{ 
    boomstring string 
} 

func (tb *testboomer) Boom(s string) { 
    tb.boomstring = s 
} 

를 구현하고 테스트 내부에 println

type foobar struct{} 

func (fb foobar) Boom(s string) { 
    fmt.Println(s) 
} 

var f Boomer = foobar{} 

https://play.golang.org/p/200WIok1pL

4)의)를 foobar.Boom을 (사용할 수 있습니다 testboomer.boomstring은 moo() 함수를 호출하여 값을 보여줍니다.