295

assertJavaScriptではどういう意味ですか?

私は次のようなものを見てきました:

assert(function1() && function2() && function3(), "some text");

そして、メソッドが何をするのか知りたいassert()です。

4

17 に答える 17

416

assertJavaScript 自体に標準はありません。おそらく、ライブラリを提供するライブラリを使用しているでしょう。たとえば、Node.js を使用している場合は、おそらくアサーション モジュールを使用しています。(コンソール APIを実装するコンソールを提供するブラウザーおよびその他の環境は、console.assert.

関数の通常の意味は、assert関数に渡された式が false の場合にエラーをスローすることです。これは、アサーション チェックの一般的な概念の一部です。通常、アサーション (と呼ばれる) は、"テスト" または "デバッグ" ビルドでのみ使用され、製品コードから削除されます。

常に文字列を受け入れる関数があるとします。誰かがその関数を文字列ではないもので呼び出したかどうかを知りたいと思うでしょう (TypeScript や Flow のような型チェック レイヤーを使用せずに)。だからあなたはするかもしれません:

assert(typeof argumentName === "string");

...assert条件が false の場合、where はエラーをスローします。

非常に単純なバージョンは次のようになります。

function assert(condition, message) {
    if (!condition) {
        throw message || "Assertion failed";
    }
}

さらに良いことに、Errorオブジェクトを利用すると、スタック トレースなどを収集できるという利点があります。

function assert(condition, message) {
    if (!condition) {
        throw new Error(message || "Assertion failed");
    }
}
于 2013-03-09T17:01:39.130 に答える
167

最新のブラウザまたは nodejs を使用している場合は、console.assert(expression, object).

詳細については:

于 2013-06-11T21:28:01.070 に答える
10

assert()ネイティブの JavaScript 関数ではありません。誰かが作ったカスタム関数です。あなたのページやファイルでそれを探し、それが何をしているのかを判断できるように投稿する必要があります。

于 2013-03-09T17:01:50.017 に答える
7

これを確認してください:http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-quick-and-easy-javascript-testing-with-assert/

JavaScript をテストするためのものです。驚くべきことに、このコードはわずか 5 ~ 6 行で、テスト時に優れたレベルの機能とコードの制御を提供します。

assert 関数は、次の 2 つのパラメーターを受け入れます。

結果: テストが成功したか失敗したかを参照するブール値

description: テストの簡単な説明。

assert 関数は、単純にリスト アイテムを作成し、テストが true または false を返すかどうかに応じて「合格」または「失敗」のいずれかのクラスを適用し、リスト アイテムに説明を追加します。最後に、コードのブロックがページに追加されます。めちゃくちゃシンプルですが、完璧に機能します。

于 2013-03-09T17:07:12.650 に答える
4

コードの一部が使用しているテスト ライブラリが付属している可能性があります。1 つの例を次に示します (コードが使用しているライブラリと同じではない可能性がありますが、一般的な考え方を示しています)。

http://chaijs.com/guide/styles/#assert

于 2013-03-09T17:05:45.030 に答える
2

以前の回答は、パフォーマンスと互換性の点で改善できます。

オブジェクトが存在するかどうかを一度確認し、Error存在しない場合は宣言します。

if (typeof Error === "undefined") {
    Error = function(message) {
        this.message = message;
    };
    Error.prototype.message = "";
}

次に、各アサーションは条件をチェックし、常にErrorオブジェクトをスローします

function assert(condition, message) {
    if (!condition) throw new Error(message || "Assertion failed");
}

コンソールには実際のエラー行番号は表示されず、assert関数の行が表示されることに注意してください。これはデバッグには役立ちません。

于 2015-02-16T20:58:35.110 に答える
2

webpack を使用する場合は、node.js アサーション ライブラリのみを使用できます。彼らは「汎用アサーション ライブラリを意図したものではない」と主張していますが、アドホック アサーションには問題ないようであり、とにかくノード空間に競合他社は存在しないようです (Chai は単体テスト用に設計されています)。

const assert = require('assert');
...
assert(jqXHR.status == 201, "create response should be 201");

これを使用できるようにするには、webpack または browserify を使用する必要があるため、明らかに、これらが既にワークフローにある場合にのみ役立ちます。

于 2016-04-08T14:41:29.517 に答える