gpt4 book ai didi

带有 'import' js 文件的 JavaScript 测试 (mocha)

转载 作者:IT老高 更新时间:2023-10-28 23:07:42 27 4
gpt4 key购买 nike

我了解 module.exportrequire 方式:

Requiring external js file for mocha testing

虽然只要是模块就很好用,但我觉得这种方式很不方便,因为我现在要做的是测试文件中的代码。

例如,我在一个文件中有一个代码:

app.js

'use strict';
console.log('app.js is running');
var INFINITY = 'INFINITY';

现在,我想在一个文件中测试这段代码:

test.js

var expect = require('chai').expect;

require('./app.js');


describe('INFINITY', function()
{
it('INFINITY === "INFINITY"',
function()
{
expect(INFINITY)
.to.equal('INFINITY');
});
});

测试代码执行app.js,所以输出为;

app.js 正在运行

然后

ReferenceError: INFINITY is not defined

这不是我所期望的。

我不想使用 module.export 和写喜欢

var app = require('./app.js');

app.INFINITYapp.anyOtherValue 用于测试代码中的每一行。

必须有一个聪明的方法。你能告诉我吗?

谢谢。

最佳答案

更新:最终答案:

我之前的回答无效,因为 eval(code); 对变量没有用处。

还好node有一个强大的方法——vm

http://nodejs.org/api/vm.html

但是,根据文档,

vm 模块有许多已知问题和边缘情况。如果您遇到问题或意外行为,请查阅 GitHub 上的未解决问题。下面描述了一些最大的问题。

所以,虽然这在表面上是有效的,但对于像测试这样的目的需要额外的小心......

var expect = require('chai')
.expect;

var fs = require('fs');
var vm = require('vm');
var path = './app.js';

var code = fs.readFileSync(path);
vm.runInThisContext(code);

describe('SpaceTime', function()
{
describe('brabra', function()
{
it('MEMORY === "MEMORY"',
function()
{
expect(MEMORY)
.to.equal('MEMORY');
})
});

});

毕竟;我在这种情况下找到的最好方法是在同一个文件中编写测试 mocha 代码。

关于带有 'import' js 文件的 JavaScript 测试 (mocha),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21421701/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com