我想以TDD方式(--watch模式)运行摩卡测试,效果很好。 但是我有一个“ global setup.js”文件,该文件模拟了应用程序的一部分,大多数测试都使用该文件。
如果我是正常运行或第一次以监视模式运行测试,那么一切都很好,因为安装脚本已加载。
但是,如果更改了测试或源文件,则仅运行相关的测试(理论上听起来很棒),但是由于我的全局模拟脚本未运行,因此测试失败。
即使在使用摩卡的观看模式下,我如何每次都能执行设置脚本(每次整体测试运行一次)?
这是我使用的命令:
vue-cli-service test:unit --watch
# pure mocha would be (I assume)
mocha 'tests/**/*.spec.js' --watch
我尝试使用--require和--file选项,但是它们也不会在文件更改时重新运行。
我正在使用通过VUE CLI创建的vue应用,这就是我的代码的样子
// setup.spec.js
import { config } from "@vue/test-utils";
before(() => {
config.mocks["$t"] = () => {};
});
// some_test.spec.js
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;
});
});
答案 0 :(得分:1)
这不是一个令人满意的答案,因为感觉应该有更好的方法,但是您可以将设置脚本导入到各个测试文件中。
例如:
// 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;
});
});
感觉次优,但是比在各处复制逻辑更好。
答案 1 :(得分:0)
在运行测试之前,您是否尝试过使用.mocharc.js文件设置摩卡配置?
'use strict';
module.exports = {
package: './package.json',
watch: true,
timeout: 100000
};