問題タブ [testify]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
449 参照

http - http.Client をモックしようとしてエラーが発生する

http.Client をモックするためにこの投稿を見て使用しましたが、モック リクエストを渡そうとすると、次のエラーが表示されます。mockClient (タイプ *MockClient の変数) を *"net/http".Client として使用できません。 api.callAPI への引数の値。

1 つのファイルには、実際のコードがあります。

HTTPClient を作成しました。

HTTPClient をインターフェイスとして渡す関数があります (仕事用なのですべてを表示することはできませんが、ここに重要な部分があります)。

callAPI メソッドを呼び出す別の関数もあります。その関数では、callAPI 関数を呼び出す直前にクライアント変数を作成します

これはすべてうまくいきます。ただし、私のテストファイルでは、上記のエラーが発生します。私はモックフレームワークにtestifyを使用しています。これが私のテストファイルにあるものです(テストファイルと実際のコードの両方が同じパッケージに含まれています):

testify を使用してモック クライアントと Do 関数をセットアップする

次に、テストを作成します。

Client 変数で行ったのと同じように、mockclient 変数で同様のことを試みました。

しかし、HTTPClient でこのエラーが発生します: undeclared name: HTTPClient. それらは同じパッケージの一部であるため、なぜこれが起こっているのかわからないので、簡単にエクスポートできると思いましたか?

0 投票する
1 に答える
767 参照

go - テスト ケースでの Golang データ競合状態

だから私はいくつかのパイプラインを持っています。2 つのファイルを行ごとに比較し、データベースへのロードなどを行う必要があります。単一行を処理するためのタイムアウトを設定し、到達した場合はパイプラインを中断したいと考えています。エンドポイントに入るのは functionRun()です。ここでは、いくつかの検証を行い、コマンドで構造を作成します

その後、fuctionrun()で、単一の goroutine で stdout の処理を​​開始commし、ubuntu でメイン プロセス コマンドを実行します。まあ、それは正常に動作し、私はそれをレースにチェックしました: go build --race, go run --race. 出力に問題はありません。しかし、単純なロジックをチェックするテストがあります。ほぼ問題なく動作しますが、10 回実行する前に 1 回失敗します。これを調査した後、このテストで競合状態が見つかりました。誰かが説明できますか、何がうまくいかないのですか?

入る

壊れたテスト

出力