Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 茉莉花的记忆_Javascript_Unit Testing_Jasmine_Hoisting - Fatal编程技术网

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; 完成; };
};您需要复制对象,或在每次测试后将属性设置回其旧值。这与提升无关-您只是共享同一个对象。请注意,这不仅是测试期间的问题,而且可能也是应用程序的问题。