2016-07-20 4 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はインターフェイスを使用することです。 foob​​arパッケージを変更できない場合でも

1)foobarに

と変数を追加)が

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

3ブーマ​​ーを受け入れること)ブーマーインタフェース

type Boomer interface{ 
    Boom(string) 
} 

2)変更MOOを(作成

私は以下のコンディションを使用します構築する。しかし、にexternパッケージにあなたの代わりにあなたがした後、テストブーマー

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を(使用することができますmoo()関数と呼ばれるtestboomer.boomstringは値を表示します。

関連する問題