2017-07-11 8 views
0

main()関数でnewrelic.NewConfignewrelic.NewApplicationが呼び出されているかどうかをテストします。 SetupNewRelicConfigが呼び出されているかどうか、私はちょうどチェックすることができmain()関数で特定のメソッドが呼び出されていることをテストするにはどうすればいいですか

func SetupNewRelicConfig() Application { 
    newRelicConfig := newrelic.NewConfig("my-app-name", 
    os.Getenv("NEW_RELIC_LICENSE_KEY")) 
    app, err := newrelic.NewApplication(newRelicConfig) 

    if err != nil { 
     log.Fatal(err) 
    } 

    return app 
} 

この方法:

import (
    "github.com/newrelic/go-agent" 
) 

func main() { 
    /* NewRelic configuration */ 
    newRelicConfig := newrelic.NewConfig("my-app-name", 
    os.Getenv("NEW_RELIC_LICENSE_KEY")) 
    app, err := newrelic.NewApplication(newRelicConfig) 

    // followed by other code 
} 

は、私のような、mainパッケージ内の別の関数にそのコードを移動する必要があります。

これをテストする正しい方法は何ですか?

+1

"正しい方法"はありません。 1秒間の目視検査は、彼らが私には十分であるが、main()で呼び出されていることを証明しますが、YMMVです。 – Adrian

答えて

1

これは自動テストや、ある種の実行時アサーションからテストしたいと思っていますか?

あなたはNewRelicパッケージによってエクスポート機能を模擬する方法を見つける必要があります:あなたはスイートに自動化されたテストを追加するために探していると仮定すると、

これを行うには非常に安価な方法は、(「Golangで猿のパッチ適用」)ここで説明されています

https://husobee.github.io/golang/testing/unit-test/2015/06/08/golang-unit-testing.html

より包括的なアプローチは、これらの機能を追加する必要があります交換することができる構造体への呼び出しあなたのテストスイートによって。ここで説明するように、依存性注入を参照してください。

https://medium.com/@zach_4342/dependency-injection-in-golang-e587c69478a8最後に

、モックフレームワークを使用してに見えます。私はストレッチャの証言プロジェクトでの嘲笑と幸運を覚えました。

関連する問題