Javascript 在观看模式下进行任何mocha测试之前,如何运行全局设置脚本

Javascript 在观看模式下进行任何mocha测试之前,如何运行全局设置脚本,javascript,typescript,unit-testing,vue.js,mocha.js,Javascript,Typescript,Unit Testing,Vue.js,Mocha.js,我想以TDD方式(--watch模式)运行mocha测试,这很好。 但是我有一个“global setup.js”文件,它模拟了大部分测试使用的应用程序的一部分 如果我第一次正常运行测试或在监视模式下运行测试,一切都很好,因为安装脚本已加载 但是,如果更改了测试或源文件,则只有相关的测试才会运行(理论上听起来很棒),但由于我的全局模拟脚本没有运行,测试就会失败 即使在mocha的观看模式下,我如何每次(每次测试运行一次)执行安装脚本 这是我使用的命令: vue cli服务测试:单元--监视 #纯

我想以TDD方式(--watch模式)运行mocha测试,这很好。 但是我有一个“global setup.js”文件,它模拟了大部分测试使用的应用程序的一部分

如果我第一次正常运行测试或在监视模式下运行测试,一切都很好,因为安装脚本已加载

但是,如果更改了测试或源文件,则只有相关的测试才会运行(理论上听起来很棒),但由于我的全局模拟脚本没有运行,测试就会失败

即使在mocha的观看模式下,我如何每次(每次测试运行一次)执行安装脚本

这是我使用的命令:

vue cli服务测试:单元--监视 #纯摩卡咖啡(我猜) 摩卡'tests/***.spec.js'--手表 我尝试过使用--require和--file选项,但它们也不会在文件更改时重新运行

我正在使用使用vue CLI创建的vue应用程序,这就是我的代码的外观

// setup.spec.js
import { config } from "@vue/test-utils";

before(() => {
  config.mocks["$t"] = () => {};
});


在运行测试之前,您是否尝试过使用.mocharc.js文件来设置您的mocha配置


    'use strict';

    module.exports = {
        package: './package.json',
        watch: true,
        timeout: 100000
};

这不是一个非常令人满意的答案,因为感觉应该有更好的方法,但是您可以将安装脚本导入到各个测试文件中

例如:

// some_test.spec.js
import 'setup.spec.js' //<-- this guy right here
import { expect } from "chai";
import { shallowMount } from "@vue/test-utils";

import MyComp from "@/components/MyComp.vue";

describe("MyComp", () => {
  it("renders sth", () => {
    const wrapper = shallowMount(MyComp);

    expect(wrapper.find(".sth").exists()).to.be.true;
  });
});
//some_test.spec.js
导入“setup.spec.js”//{
它(“呈现某物”,()=>{
const wrapper=shallowMount(mycop);
期望(wrapper.find(“.sth”).exists())为真;
});
});

感觉不太理想,但比到处复制逻辑要好。

在所有测试之前,此配置文件应该如何运行安装脚本?我当前的解决方案是导入安装函数,并在它需要的每个测试的before语句中使用它。这样,至少我没有副作用的魔法导入。@SergejHerbert,是的,我明白你的推理。我可能会转而这样做。感觉摩卡咖啡应该有更好的方式。我在上问了一个问题,要么他们让我知道我遗漏了什么,要么我将打开功能请求。看起来您应该能够使用mocha的
--require
选项来确保在运行测试之前始终加载文件。您可以在cli或
mocha.opts
中执行此操作。我还没能让它工作,我认为Typescript和Vue CLI的结合对于我来说是太多的抽象层次了,现在无法完成。我尝试使用--require(如问题中所述),但我得到的行为与只在第一次运行时执行此操作相同。。。
// some_test.spec.js
import 'setup.spec.js' //<-- this guy right here
import { expect } from "chai";
import { shallowMount } from "@vue/test-utils";

import MyComp from "@/components/MyComp.vue";

describe("MyComp", () => {
  it("renders sth", () => {
    const wrapper = shallowMount(MyComp);

    expect(wrapper.find(".sth").exists()).to.be.true;
  });
});