回答:
assert
JavaScriptにはありません(まだ、1つ追加するという話がありますが、それは初期段階です)。おそらく、ライブラリを提供するライブラリを使用しています。通常の意味は、関数に渡された式がfalseの場合にエラーをスローすることです。これは、アサーションチェックの一般的な概念の一部です。通常、アサーション(呼び出される)は「テスト」または「デバッグ」ビルドでのみ使用され、本番コードから削除されます。
常に文字列を受け入れることになっている関数があるとします。文字列ではないもので誰かがその関数を呼び出したかどうかを知りたいでしょう。だからあなたはそうするかもしれません:
assert(typeof argumentName === "string");
... assert
条件が偽の場合、エラーがスローされます。
非常に単純なバージョンは次のようになります。
function assert(condition, message) {
if (!condition) {
throw message || "Assertion failed";
}
}
さらに良いことにError
、JavaScriptエンジンがサポートしている場合はオブジェクトを使用します(実際には古いオブジェクトはサポートしていない可能性があります)。これには、スタックトレースなどを収集できるという利点があります。
function assert(condition, message) {
if (!condition) {
message = message || "Assertion failed";
if (typeof Error !== "undefined") {
throw new Error(message);
}
throw message; // Fallback
}
}
IE8にもありますError
(stack
プロパティはありませんが、最新のエンジン(最新のIEを含む)にはあります)。
if(!condition)
に設定されvar throwError=true;
、その後debugger;
、その後にスローセクションを包みますif(throwError)
。このようにして、デバッガーを開いている場合はデバッガーが壊れ、必要に応じthrowError
てfalseに設定して、ステップアウト中にすべてのスコープを調べることができます。
throw
。そうすれば、debugger;
ステートメントは必要ありません。詳細については、developer.chrome.com / devtools / docs / …をご覧ください。
if
条件付き演算子と交換したばかりの「もっと単純」だとは思いません。とにかく、今日の世界では、を持たないエンジンをサポートする気になりませんError
。
最新のブラウザまたはnodejsを使用してconsole.assert(expression, object)
いる場合は、を使用できます。
詳細については:
console.error
、コードが実行を継続するという点でより似ています。
console.assert
と同じ動作をしない限り、これはあまり良くありませんthrow
。
console.assert
アサーションはエラー処理関数ではないため、実行が継続するのは理由です。これらは、開発中のみのコードの正当性チェック用に設計されています。通常、これらは運用環境では完全に無効になっていて、些細なことが原因でライブシステムが終了するのを防ぎます。ブラウザーは実稼働環境と見なされるため、console.assert
そこで実行を終了することはありません。実行を停止するためにアサーションに依存している場合は、代わりに適切なエラー処理を使用する必要があります。これはアサーションの目的ではないためです。
他の答えは良いです:ECMAScript5に組み込まれたアサート関数(たとえば、基本的にどこでも機能するJavaScript)はありませんが、一部のブラウザーはそれを提供するか、その機能を提供するアドオンを持っています。これには、定評のある/人気のある/維持されているライブラリを使用するのがおそらく最善ですが、学術目的では、「貧乏人の断言」関数は次のようになります。
const assert = function(condition, message) {
if (!condition)
throw Error('Assert failed: ' + (message || ''));
};
assert(1 === 1); // Executes without problem
assert(false, 'Expected true');
// Yields 'Error: Assert failed: Expected true' in console
try
、catch
、throw
)
これを確認してください: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のどちらを返したかに応じて、「合格」または「不合格」のいずれかのクラスを適用し、リストアイテムに説明を追加します。最後に、そのコード化されたブロックがページに追加されます。とてもシンプルですが、完璧に動作します。
これは、assert関数の本当に単純な実装です。テストする対象の値と説明を受け取ります。
function assert(value, description) {
var result = value ? "pass" : "fail";
console.log(result + ' - ' + description);
};
値がtrueと評価された場合は合格です。
assert (1===1, 'testing if 1=1');
falseを返すと失敗します。
assert (1===2, 'testing if 1=1');
アサーションがfalseの場合、メッセージが表示されます。具体的には、最初の引数がfalseの場合、2番目の引数(文字列メッセージ)が開発者ツールコンソールに記録されます。最初の引数がtrueの場合、基本的に何も起こりません。簡単な例–私はGoogle Developer Toolsを使用しています:
var isTrue = true;
var isFalse = false;
console.assert(isTrue, 'Equals true so will NOT log to the console.');
console.assert(isFalse, 'Equals false so WILL log to the console.');
おそらく、コードの一部が使用しているテストライブラリが付属しています。これは1つの例です(コードが使用しているライブラリと同じではない可能性がありますが、一般的な考え方を示しています)。
単語または関数「assert」は、アプリケーションの一部のテストで主に使用されます。
アサート関数は、プログラムに条件( "アサーション"とも呼ばれます)を確認するように指示する簡単な方法であり、条件がTrueでない場合、エラーをスローします。
それでは、「通常のコード」でどのように見えるかを見てみましょう
if (typeof "string" === "array") {
throw Error('Error: "string" !== "array"');
}
assert
あなたは、単に書くことができます。
assert(typeof "string" === "array")
JavaScriptにはネイティブassert
関数がないため、いくつかのライブラリの関数を使用する必要があります。
簡単な紹介については、この記事を確認できます。
http://fredkschott.com/post/2014/05/nodejs-testing-essentials/
お役に立てば幸いです。
最初の属性がfalseで、2番目の属性がスローされるメッセージである場合、アサーションはエラーメッセージをスローします。
console.assert(condition,message);
JavaScriptにはアサーションは存在しないが、JavaScript console.assert()
のアサート関数であるというコメントがたくさんあります。アサーションのアイデアは、バグが発生した理由/場所を見つけることです。
console.assert(document.getElementById("title"), "You have no element with ID 'title'");
console.assert(document.getElementById("image"), "You have no element with ID 'image'");
ここでは、メッセージに応じて、バグが何であるかを見つけることができます。これらのエラーメッセージはconsole.error();
、コンソールに次の関数を表示するには、console.log(console);
以前の回答は、パフォーマンスと互換性の点で改善できます。
確認後場合は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
関数の行は表示されますが、デバッグには役立ちません。
webpackを使用する場合は、node.jsアサーションライブラリを使用できます。「汎用のアサーションライブラリを意図したものではない」と彼らは主張しているが、アドホックアサーションには問題ないと思われ、いずれにせよノードスペースに競合他社は存在しないようです(Chaiはユニットテスト用に設計されています)。
const assert = require('assert');
...
assert(jqXHR.status == 201, "create response should be 201");
これを使用できるようにするには、webpackまたはbrowserifyを使用する必要があります。そのため、これは、ワークフローにすでに含まれている場合にのみ役立ちます。
console.assertや独自のロールなどの他のオプションに加えて、インバリアントを使用できます。いくつかのユニークな機能があります:
%s
指定子を使用)。TJが述べたようにassert
、JavaScriptにはありません。しかし、名前のノードモジュールがあるアサートされ、主にテストのために用いられます。したがって、次のようなコードが表示される場合があります。
const assert = require('assert');
assert(5 > 7);
assert
ます。