我正在尝试为旧的jQuery插件编写单元测试。我是现代Javascript环境中的新手。我已经尝试为React创建单元测试,它使用browserify在生产中进行部署。
遗留的jQuery插件文件如下所示
(function($) {
$.fn.myLegacyPlugin = function() {
alert('Hello World!');
};
})(jQuery);
此文件将上传到S3并通过CDN访问。 jQuery将包含在普通的浏览器头标签中。
测试文件如下所示。
let expect = require('chai').expect;
let path = require('path');
let $ = require('jquery');
require('../src/plugin.js');
describe('plugin', () => {
it('should return okay', () => {
expect(true).to.be.true; //TODO
});
});
问题在于,当我尝试执行测试时,跑步者显示jQuery is not defined
。如果不修改遗留的jQuery插件,我该如何测试插件?
答案 0 :(得分:0)
在尝试了几种可能性之后,我可以使用读取文件并评估脚本内容,而不是使用模块导入。
仅更改
require('../src/plugin.js');
到这个
eval(fs.readFileSync(path.join(__dirname, '../src') + '/plugin.js', 'utf8'));
这样我就不必修改旧文件了。
答案 1 :(得分:-1)
可能是你要求jquery为“$”并将其作为“jQuery”传递给插件。虽然jquery应该用两个名称定义,不管怎样。 你可以尝试这样的jquery:
let [<Literal>] resPath = __SOURCE_DIRECTORY__ + @"..\packages\MySql.Data.8.0.8-dmr\lib\net452"
答案2: 实际上,如果你的代码(插件)依赖于jquery,你的plugin.js在加载之前应该需要jquery ..
所以将plugin.js改为
let jQuery= require('jquery');