2017-02-22 16 views
0

私はPythonから来て、私は外出先で冗談を書く方法を探していました。私はSOにいくつかの点を見つけましたが、それらはすべて、いつも必要とされるもののために非常に扱いにくく、冗長であるように見えます。簡単な方法はありますか?

は私が必要な場合は、後にコードを追加します、今の携帯に入力しています...しかし、例えば...

は、私は途中でどこかに smtp.Sendを呼び出す関数を持っていると言います。どうすればこの機能を簡単にテストできますか?

外部のいくつかのAPI(ヒットする必要があります)にヒットし、応答を取ってioutil.Readall()のようなものを呼び出すと、...私はこのテスト機能を使って自分のやり方を模索し、 Readallが呼び出されたときにいくつかの偽の応答データを渡しますか?

+1

これ以外のコードを投稿すると、あなたが何をしようとしているのかが分かりにくいです。 – Tinwor

答えて

1

インターフェイスを使用して行うことができます。

type Mailer interface { 
    Send() error 
} 

今、あなたはSendメソッドを呼び出す関数にメーラーオブジェクトを埋め込むことができます。たとえば、あなたがメーラーと呼ばれるインターフェースを持っているとしましょう。

type Processor struct { 
    Mailer 
} 

func (p *Processor) Process() { 
    _ = p.Mailer.Send() 
} 

これで、模擬メーラーを作成できます。

p.Processが、それはあなたの嘲笑 Sendメソッドを呼び出し Send方法に達する
type mockMailer struct{} 
//implement the Send on the mockMailer as you wish 

p := &Processor{ 
    Mailer: mockMailer, 
} 

p.Process() 

+0

この例では、テストしたい機能がメーラーインターフェイスを入力として受けなければなりません。 – deltaskelta

+0

@deltaskeltaまた、API呼び出しをモックするには、net/http/httptest –

関連する問題