-1

テスト関数で使用する静的グローバル変数をモックする方法はありますか? またはそのための回避策はありますか?

このような状況の例を以下に示します。

static zsock_t *publish_logs =  NULL;

int btak_log_message_reactor(zloop_t *loop, zsock_t *reader, void *arg) {
    struct btak_log_message *message;
    size_t message_size;

    if(zsock_recv(reader, "b", &message, &message_size) == 0) {
        push_log_message(message);
        if(publish_logs)
            publish_log_message(message, publish_logs);
        free(message);
    }

    return 0;
}
4

1 に答える 1

2

リンカーのことを忘れがちです。別のオブジェクト ファイルを使用してインターフェイスをモックできます。このモック obj には、グローバルの異なる定義が含まれます。

しかし、現在の単体テスト フレームワークはコード レベルでしか機能しません...そのため、テスト ビルドにモック オブジェクトを追加するには、いくつかのビルド fu が必要になります。

于 2016-04-13T10:50:24.097 に答える