JavaScriptでassert
はどういう意味ですか?
次のようなものを見ました。
assert(function1() && function2() && function3(), "some text");
そしてassert()
メソッドが何をするのか知りたいのですが。
JavaScriptにはassert
はありません(まだ; 1を追加するという話はありますが 、初期段階です)。おそらくそれを提供するライブラリを使っているのでしょう。通常の意味は、関数に渡された式がfalseの場合にエラーをスローすることです。これは アサーションチェック の一般的な概念の一部です。通常、アサーションは(呼ばれているとおりに)「テスト」または「デバッグ」ビルドでのみ使用され、プロダクションコードから取り除かれます。
常に文字列を受け入れると想定されている関数があるとします。誰かがその関数を文字列ではないもので呼び出したかどうかを知りたいでしょう。だからあなたがするかもしれません:
assert(typeof argumentName === "string");
...条件が偽の場合、assert
はエラーをスローします。
非常に単純なバージョンはこのようになります。
function assert(condition, message) {
if (!condition) {
throw message || "Assertion failed";
}
}
さらに良いことに、JavaScriptエンジンがそれをサポートしていればError
オブジェクトを使用してください(本当に古いものはサポートしていないかもしれません)、これはスタックトレースを集めるという利点があります。
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を含む)は持っています)。
最新のブラウザまたはnodejsを使用している場合は、console.assert(expression, object)
を使用できます。
詳細については:
他の答えは良いです:ECMAScript 5に組み込まれたassert関数(例えば、基本的にどこでも動作する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
assert()
はネイティブのJavaScript関数ではありません。それは誰かが作ったカスタム機能です。あなたはそれをあなたのページ上またはあなたのファイル内で探し、それが何をしているのかを判断するのを助けるために誰かのためにそれを投稿しなければならないでしょう。
これを確認してください。 http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-quick-and-easy-javascript-testing-with-assert/
javaScriptをテストするためのものです。驚くべきことに、わずか5〜6行で、このコードはテスト時にあなたのコードを強力に制御します。
Assert関数は2つのパラメータを受け取ります。
結果:ブール値。テストが成功したか失敗したかを参照します。
説明:テストの簡単な説明。
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');
それが偽を返すなら、それは失敗します。
assert (1===2, 'testing if 1=1');
アサーションが偽の場合、メッセージが表示されます。具体的には、最初の引数がfalseの場合、2番目の引数(文字列メッセージ)は開発者ツールのコンソールに記録されます。最初の引数が正しい場合、基本的に何も起こりません。簡単な例 - 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.');
おそらくあなたのコードのいくつかが使っているテスト用ライブラリが付属しています。これがその一例です(たぶんあなたのコードが使っているのと同じライブラリではないかもしれませんが、それは一般的な考えを示しています):
単語や関数 "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/
助けになれば幸いです。
console.assert または のように他のオプションを追加する 、 不変式 を使用できます。それはいくつかのユニークな特徴を持っています:
%s
指定子を使用)。これまでの答えはパフォーマンスと互換性の面で改善することができます。
Error
オブジェクトが存在する場合はを1回チェックし、宣言されていない場合は
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アサーションライブラリ を使うだけです。彼らは「汎用のアサーションライブラリを意図していない」と主張していますが、アドホックなアサーションでは大したことではないと思われます。
const assert = require('assert');
...
assert(jqXHR.status == 201, "create response should be 201");
これを使用できるようにするにはwebpackまたはbrowserifyを使用する必要があるので、明らかにこれはそれらがすでにワークフローにある場合にのみ有用です。