Javascript 茉莉花的记忆
我在茉莉花测试中遇到了问题Javascript 茉莉花的记忆,javascript,unit-testing,jasmine,hoisting,Javascript,Unit Testing,Jasmine,Hoisting,我在茉莉花测试中遇到了问题 var utils = require('./utils'); describe('test', function() { it('test 1', function (done) { var baseMock = utils.fixtures.base; baseMock.campaigns.name ='test 1'; console.log(baseMock.campaigns.name); done(); });
var utils = require('./utils');
describe('test', function() {
it('test 1', function (done) {
var baseMock = utils.fixtures.base;
baseMock.campaigns.name ='test 1';
console.log(baseMock.campaigns.name);
done();
});
it('test 2', function (done) {
var baseMock = utils.fixtures.base;
'it should be the original name, but have the name changed in the first test'
console.log(utils.fixtures.base.campaigns.name);
done();
});
});
我有一个基础数据mock utils.fixture.base,用于每个测试。但是,当我更改此模拟的某些属性时,此更改将反映在下一个测试中
如何获得每个测试的原始模拟,以及原始属性
pd:我使用的是旧版本的node,带有ecma5
pd2:对不起我的英语
谢谢 由于我们不知道utils.fixtures.base包含哪些内容,因此不可能确切地告诉您该做什么,但实际上,您需要一种方法在每个测试中创建模拟对象的副本,因此您不能直接修改它: var utils=require'/utils'; 函数buildBaseMock{ 返回makeACopyOfutils.fixtures.base; } 描述“测试”功能{ 它“测试1”,功能完成{ var baseMock=buildBaseMock; baseMock.magnities.name='test 1'; console.logbaseMock.magnities.name; 完成; }; 它“测试2”,功能完成{ var baseMock=buildBaseMock; '应该是原始名称,但在第一次测试中更改了名称' console.logutils.fixtures.base.activities.name; 完成; };
};您需要复制对象,或在每次测试后将属性设置回其旧值。这与提升无关-您只是共享同一个对象。请注意,这不仅是测试期间的问题,而且可能也是应用程序的问题。