ES6/Mocha包含文件
ES6/Mocha Include Files
我对ES6导出/导入语法很陌生,我想知道如何在我的indexTest.js
文件中动态导入带有测试的文件。
我有两个带有测试的文件。
PeopleTest.js
/* global it, describe, before, after */
/* eslint import/no-extraneous-dependencies: ["error", {"devDependencies": true}] */
import chai, { expect } from 'chai';
import dirtyChai from 'dirty-chai';
chai.use(dirtyChai);
describe('People tests', () => {
it('Mock', () => {
expect(true).to.be.true();
});
});
PostTest.js
/* global it, describe, before, after */
/* eslint import/no-extraneous-dependencies: ["error", {"devDependencies": true}] */
import chai, { expect } from 'chai';
import dirtyChai from 'dirty-chai';
chai.use(dirtyChai);
describe('Post tests', () => {
it('Mock', () => {
expect(true).to.be.true();
});
});
我想要一个全局文件来导入这两个文件
indexTest.js
/* global it, describe, before, after */
/* eslint import/no-extraneous-dependencies: ["error", {"devDependencies": true}] */
import chai, { expect } from 'chai';
import dirtyChai from 'dirty-chai';
chai.use(dirtyChai);
describe('All tests', () => {
before(() => {
// some stuff
});
after(() => {
// some stuff
});
import './PeopleTest';
import './PostTest';
});
但是它当然不能工作,因为import
语句应该在顶层。
你可以按照coding阴谋在评论中建议的那样调用require
而不是使用import
。然而,这需要对运行时环境做一个假设,而这个假设可能并不总是成立。例如,如果你将ES6代码编译到使用AMD语义加载模块的环境中,那么describe
中的require
将被解释为好像它位于import
语句的顶部,并且你不会得到你想要的结果。
得到你想要的东西的一种方法,不需要假设ES6模块加载语义之外的任何东西,只需修改你导入的两个模块,以便它们导出一个函数来创建它们想要运行的测试,然后在需要的地方调用该函数。
要导入的模块之一可以是:
/* global it, describe, before, after */
/* eslint import/no-extraneous-dependencies: ["error", {"devDependencies": true}] */
import chai, { expect } from 'chai';
import dirtyChai from 'dirty-chai';
export default function peopleTest() {
chai.use(dirtyChai);
describe('People tests', () => {
it('Mock', () => {
expect(true).to.be.true();
});
});
};
你的主测试文件可以变成:
/* global it, describe, before, after */
/* eslint import/no-extraneous-dependencies: ["error", {"devDependencies": true}] */
import chai, { expect } from 'chai';
import dirtyChai from 'dirty-chai';
import peopleTest from './PeopleTest';
import postTest from './PostTest';
chai.use(dirtyChai);
describe('All tests', () => {
before(() => {
// some stuff
});
after(() => {
// some stuff
});
peopleTest();
postTest();
});
只能在HTML页面中包含脚本文件,而不能在另一个脚本文件中包含脚本文件。也就是说,您可以编写JavaScript将"包含"脚本加载到同一页面:
var imported = document.createElement('script');
imported.src = '/path/to/imported/script';
document.head.appendChild(imported);
有一个很好的机会,你的代码依赖于你的"包含"脚本,然而,在这种情况下,它可能会失败,因为浏览器将异步加载"导入"的脚本。您最好的选择是简单地使用第三方库,如jQuery或YUI,它可以为您解决这个问题。
// jQuery
$.getScript('/path/to/imported/script.js', function()
{
// script is now loaded and executed.
// put your dependent JS here.
});
from this question
相关文章:
- 如何将Bundle中的javascript文件包含到一个trick文件中
- 如何使用webpack将全局JS文件包含到我的React项目中
- 如何在从外部连接时将外部文件包含到node-js项目中
- 包含的文件中引发引用错误..除非调用文件包含慢速代码
- 如何使用浏览器“需要”配置文件,但不将此文件包含在捆绑包中
- 如何将 XML 文件包含在摩卡测试用例中
- 为什么我的 ajax 调用没有生成,因为我包含 ajax 的 js 文件包含在 iframe 中
- AngularJS应用程序:如何将.js文件包含到index.html中
- 执行批处理文件的Javascript,该文件包含基于每个会话的环境变量设置
- 如何将php文件包含到我的html文件中
- 如何将 CSS 和 JS 文件包含在 PHP 模板中
- gulp文件包含和翡翠嵌套问题
- 如何将一个 JavaScript 文件包含在另一个 JavaScript 文件中 这不是从浏览器中运行的
- 在服务器端环境或命令行环境中将一个 javascript 文件“包含”到另一个文件
- Mutilpe JS文件包含在另一个js文件中有时不起作用
- 如何将属性传递给 PHP 中的 JS 文件包含
- 将带有 php 和 javascript 变量的 php 文件包含在 ajax 文件中
- 用PHP创建的文本文件包含页面代码
- 我想使用 JavaScript 将外部 PHP 文件包含在 HTML 页面中
- shadow-root:有没有办法将外部JavaScript文件包含在shadow-root中