遅延Goステートメントをテストする方法は?

マルシオ:

doStuff機能をテストするにはどうすればよいですか?(プレイグラウンド:http : //play.golang.org/p/aPFSlaBLgX

package myPackage

var locked = false

func doStuff() {
    defer unlock()
    lock()
    // some task that can cause errors
    // need to test if lock was really unlocked
    // this is just a simple example, things can go complex on real world
    panic("!")
}

func lock() {
    locked = true
}

func unlock() {
    locked = false
}

つまり、deferステートメントを使用するコードをテストする方法は遅延呼び出しをテストするために使用する必要がある一般的な戦略は何ですか?一般的な実践がない場合、この特定のコードをテストする方法は?

PS:Goプレイグラウンドでは、 package main

マルシオ:

TL; DR

パニック状態をテストするには、アサーションを延期する必要があります

panic状態をテストするにはdefer、アサーションテストする必要があります。

package myPackage

import "testing"

func TestLock(t *testing.T) {
    defer func (){
        if locked == true {
            t.Error("Expected locked to be false but got locked =", locked)
        }
    }() // do assertions on panicked state ↑
    defer func (){ recover() }() // recover from panic ↑
    doStuff() // this will panic and code execution will flow up ↑
    // and, of course, execution will never reach below this line ---
    // don't put assertions here
}

これはdoStuff()、をシミュレートしているpanicため、以下でコードが実行されないために発生します。したがって、アサーションは据え置かれ、「パニックスコープ」になる可能性があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

遅延ステートメントをキャンセルする方法

分類Dev

1つのステートメントですべてのXを遅延取得するIEnumerableを作成する方法

分類Dev

キーアップ偶数とifステートメントの間に遅延を作成する方法

分類Dev

Angularは遅延のある連続したステートメントを実行します

分類Dev

iOSで遅延ディープリンクをテストする方法

分類Dev

パフォーマンステストでネットワーク遅延を回避する方法

分類Dev

DispatchQueue を使用して、switch ステートメントからの NSTextView の更新の遅延を修正する

分類Dev

従業員の遅延とOTを取得するための適切なSQLステートメント

分類Dev

redux-sagaの遅延をテストする方法

分類Dev

Pythonマルチスレッド印刷ステートメントは、すべてのスレッドが実行を完了するまで遅延します

分類Dev

Dialogflowはコンテキスト遅延を作成します

分類Dev

Androidで遅延後にボタンテキストを表示する方法

分類Dev

遅延のあるノンブロッキングステートメント

分類Dev

実行ステートメントの遅延が長い

分類Dev

C#でifステートメント/メソッドを遅らせる方法はありますか

分類Dev

SASS、各リストアイテムを遅延してアニメーション化する

分類Dev

複数のif条件付きステートメントを遅延させるにはどうすればよいですか?

分類Dev

この遅延ステートメント(returnなし)を実行すると、戻り値が返されないのはなぜですか?

分類Dev

動的IFステートメントを作成する方法は?反射?

分類Dev

ifステートメント内でexprを使用する方法は?

分類Dev

「asyncwith」ステートメントをモックする方法は?

分類Dev

djangoでSQLステートメントを使用する方法は?

分類Dev

IFステートメントで配列を使用する方法は?

分類Dev

IFステートメントで配列を使用する方法は?

分類Dev

ifステートメントのNaNを「宣言」する方法は?

分類Dev

ステートメントの「UseSparseArrays」を抑制する方法は?

分類Dev

宣言とIfステートメントを接続する方法は?

分類Dev

Rでifステートメントを使用する方法は?

分類Dev

SQLステートメントを変更する方法は?

Related 関連記事

  1. 1

    遅延ステートメントをキャンセルする方法

  2. 2

    1つのステートメントですべてのXを遅延取得するIEnumerableを作成する方法

  3. 3

    キーアップ偶数とifステートメントの間に遅延を作成する方法

  4. 4

    Angularは遅延のある連続したステートメントを実行します

  5. 5

    iOSで遅延ディープリンクをテストする方法

  6. 6

    パフォーマンステストでネットワーク遅延を回避する方法

  7. 7

    DispatchQueue を使用して、switch ステートメントからの NSTextView の更新の遅延を修正する

  8. 8

    従業員の遅延とOTを取得するための適切なSQLステートメント

  9. 9

    redux-sagaの遅延をテストする方法

  10. 10

    Pythonマルチスレッド印刷ステートメントは、すべてのスレッドが実行を完了するまで遅延します

  11. 11

    Dialogflowはコンテキスト遅延を作成します

  12. 12

    Androidで遅延後にボタンテキストを表示する方法

  13. 13

    遅延のあるノンブロッキングステートメント

  14. 14

    実行ステートメントの遅延が長い

  15. 15

    C#でifステートメント/メソッドを遅らせる方法はありますか

  16. 16

    SASS、各リストアイテムを遅延してアニメーション化する

  17. 17

    複数のif条件付きステートメントを遅延させるにはどうすればよいですか?

  18. 18

    この遅延ステートメント(returnなし)を実行すると、戻り値が返されないのはなぜですか?

  19. 19

    動的IFステートメントを作成する方法は?反射?

  20. 20

    ifステートメント内でexprを使用する方法は?

  21. 21

    「asyncwith」ステートメントをモックする方法は?

  22. 22

    djangoでSQLステートメントを使用する方法は?

  23. 23

    IFステートメントで配列を使用する方法は?

  24. 24

    IFステートメントで配列を使用する方法は?

  25. 25

    ifステートメントのNaNを「宣言」する方法は?

  26. 26

    ステートメントの「UseSparseArrays」を抑制する方法は?

  27. 27

    宣言とIfステートメントを接続する方法は?

  28. 28

    Rでifステートメントを使用する方法は?

  29. 29

    SQLステートメントを変更する方法は?

ホットタグ

アーカイブ