JavaScriptで完全に自動化された単体テストを作成しようとしていますが、さまざまなJS関数でいくつかのプライベート変数を読み取る方法を探しています。特権メンバーを関数/オブジェクトに注入する方法を思い出した(そして「JSにはプライベートのようなものはない」という圧倒的な発生を見つけた)が、その方法を示すリソースが見つからない。
私はのプロパティを読み通そうとしていますが.prototype
、方法があれば、ここにいる誰かが、私が自分で見つけるよりも速く私をどこに向けるべきかを知っているでしょう。
ありがとう
アップデート
特権とは、オブジェクトの外部から使用可能であり、「プライベート」変数(外部から読み取ることができない変数)を読み取るためのアクセス権を持つ関数を意味します。Crockfordの説明については、http://javascript.crockford.com/private.htmlを参照してください。
注入しようとしている関数のサンプルはです
o2
。ここで、の値を検証する必要がありますx
(これは単純化された例であり、実際のコードはいくつかの変換を行い、個別にテストする予定の他の関数に送信します)。var o2 = function() { var x = 'me'; };
更新2:応答に時間を割いてくれたすべての人に感謝します。他のSAの質問で「JSにはプライベートはない」と言われているのに、ここでの圧倒的な反応は「プライベートはプライベート」であることがわかります。それは、私がまだ知らなかった潜在的な抜け穴へのある種の洞察であると私が望んでいたというよりも、修辞的な解説のようなものだと思います。