首页 > 解决方案 > Javascript-全局变量值未正确反映在代码块之外

问题描述

我已将全局变量(布尔值)设置为 false,然后在代码块中将其设置为 true,然后导出此变量以编写单元测试。

我确定我已经点击了代码,但我仍然看到该值是错误的!!!

这是代码片段

var bWrittenRegistry = false;

function setOrUnsetRegistry(regValue){
 let promise = new Promise(function(resolve, reject) {
    resolve((async () => {

      if(somecondition){

       regedit.putValue({
        'HKLM\\System\\CurrentControlSet': {
          'something': {
            value: regValue,
            type: 'REG_SZ'
           }
        }
      },function(err) {//callback
          console.log("called");//printed
          if (err) {
            console.log("Error22" + err);
          }else {
               bWrittenRegistry = true;
               console.log(bWrittenRegistry);// prints true
           }
       }
     );
   }

  }))();
 }

Inside test.spec.js

 it('should set or unset unset variable in registry',function(done){
        this.timeout(300000);
        somefunc.setOrUnsetRegistry(1).then(function(){
        console.log(somefunc.bWrittenRegistry);//prints false
        expect(somefunc.bWrittenRegistry).to.equal(true);//test fails
        done();
        })

  })

我相信正在发生一些异步的事情,但我希望它必须在回调后打印“真”

标签: javascriptpromiseglobal-variables

解决方案


推荐阅读