私はクロムエクステンションを開発中に関数をテストしようとしています。私のテストフレームワークでは、sinon(スパイ、モック、スタブ)、mocha、chai、jsdom(chrome拡張のバックグラウンドとポップアップスクリプトを実行するDOMを作成する)を使用しています。テスト目的でjsdomに注入されたスクリプトでjavascript関数を偵察するには?
しかし、私はjsdomに注入しているスクリプト(background.js)の関数を偵察することができないようです。
これは私がやっているものです:
background.js
function searchTabs() {...}
searchTabs();
module.exports.searchTabs = searchTabs;
background.test.js
var fs = require('fs');
var sinon = require('sinon');
var chrome = require('sinon-chrome');
var assert = require('chai').assert;
var jsdom = require('jsdom');
var bg = require('background.js');
var window;
var spy;
describe('background page', function() {
beforeEach(function() {
jsdom.env({
html: '<html></html>',
src: [
fs.readFileSync('background.js', 'utf-8'), // Inject script into jsdom
],
created: ...,
done: ...,
});
});
afterEach(function() {
chrome.reset();
window.close();
});
it('should call searchTabs', function() {
spy = sinon.spy(bg.searchTabs);
sinon.assert.calledOnce(spy); // This is not called :(
});
});
を私は問題が間違っ輸入のいずれかに関係している疑いがあります/ exportまたはjsdomに注入されたbackground.jsスクリプトがスパイにラップされていないことを確認します。私は誰かがこの問題についていくつかの光を当てることができれば本当に感謝します!
私は次のことが明らかになったと思われる:https://stackoverflow.com/questions/5605961/what-is-the-difference-between-jsdom-env-and-jsdom-jsdom – beaumontwebdev
質問を編集[編集] on-topic:問題を再現する[mcve]を含める*。 Chrome拡張機能やFirefox WebExtensionsの場合は、* manifest.json *とバックグラウンド、コンテンツ、ポップアップスクリプト/ HTML、およびウェブページのHTML /スクリプトを含める必要があります。デバッグの助けを求める質問(「なぜ私のコードは私が望むように動作していないのですか?")は、(1)望ましい行動、(2)特定の問題またはエラー、(3)質問そのものに*を再現するために必要な最短コード*を含んでいなければなりません。 ?](/ help/on-topic)、[ask] – Makyen