我一直在尝试使用mocha require选项:
karma start
但我不知道如何从业力中做到这一点。我们的想法是运行myglobals.js
,它会自动需要karma.conf.js
。
可以在karma start
内或其他方式进行吗?
也许我没有以正确的方式使用业力/摩卡。
我的想法是:
myglobals.js
并测试客户端和服务器测试 const chai = require('chai');
// Load Chai assertions
global.expect = chai.expect;
global.assert = chai.assert;
chai.should();
// Load Sinon
global.sinon = require('sinon');
// Initialize Chai plugins
chai.use(require('sinon-chai'));
chai.use(require('chai-as-promised'));
chai.use(require('chai-things'));
:
mocha mytest.js --require myglobals.js
对于服务器端,我使用以下命令使其工作:
npm run test
但是,我仍然想让它在karma start
(调用npm run test:server
)下运行,而不是创建另一个data TABLE1;
informat id $3. Ser $1. Start datetime19. End datetime19.;
format Start End datetime19.;
input id Ser Start End;
datalines;
Qa. A 23May2016:00:34:00 23May2016:00:40:00
Qw. A 23May2016:00:34:00 23May2016:00:40:00
Qz. A 23May2016:00:34:00 23May2016:00:40:00
;
data TABLE2;
informat id $3. Ser $1. Start datetime19. End datetime19.;
format Start End datetime19.;
input id Ser Start End;
datalines;
Qw. B 23May2016:00:35:00 23May2016:00:41:00
Qz. A 23May2016:00:37:00 23May2016:00:42:00
;
proc sort data = Table1;
by id;
run;
proc sort data = Table2;
by id;
run;
data want;
merge TABLE1(IN = T1 RENAME = (Start=StartA End=EndA))
TABLE2(IN = T2 RENAME = (Start=StartB End=EndB));
by id;
if t1 and t2 then do;
if intck("seconds",StartA, StartB) <= 120 then in_time = 1;
else in_time = 0;
end;
else if t1 and not t2 then in_time = -1;
run;
命令。
此外,我想在客户端上做同样的事情。我在那里使用webpack作为预处理器。
任何想法是否有可能实现?或者也许我的方式错了?
答案 0 :(得分:3)
浏览器中的Mocha不支持等效的--require
选项,但您不需要它。您可以在测试之前加载所需的任何内容,列出要在测试文件前面加载files
的文件。或者如果你使用像RequireJS这样的加载器,写一个test-main.js
来加载你首先加载--require
的模块,然后加载你的测试文件。
如果您查看Mocha的代码,您会看到--require
文件中唯一使用requires.forEach(function(mod) {
require(mod);
});
的地方。此选项不会进一步传递到Mocha代码中,但会立即用于bin/_mocha
:
--require
当您在浏览器中运行Mocha时,这些代码都不会运行,如果您查看其余的Mocha代码,您将无法在其他地方找到类似的工具。为什么呢?
因为它没有用处。 require
选项在命令行中非常有用。没有它,在Mocha加载测试文件之前加载模块的唯一方法是编写自定义代码以启动Mocha或在每个测试文件的开头放置必要的--require
调用。
在浏览器中,如果您不使用模块加载器,则只需加载使用script
加载的代码,方法是将加载它们的script
元素放在前面。加载测试的files
个元素。在Karma中,这意味着将这些文件提前放在karma.conf.js
中的test-main.js
列表中。或者,如果您使用RequireJS,则编写--require
以便加载分两个阶段完成:一个加载您在命令行上通过const allTestFiles = [];
const TEST_REGEXP = /test\/test.*\.js$/i;
Object.keys(window.__karma__.files).forEach((file) => {
if (TEST_REGEXP.test(file)) {
const normalizedTestModule = file.replace(/^\/base\/|\.js$/g, "");
allTestFiles.push(normalizedTestModule);
}
});
require.config({
baseUrl: "/base",
paths: {
...
},
});
// This guarantees that "a", "b", "c" loads before any other module
require(["a", "b", "c", ...], () => {
require(allTestFiles, window.__karma__.start);
});
加载的模块,以及第二个加载你的测试文件。它可能是这样的:
bid_amount