Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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_Typescript_Unit Testing_Jasmine - Fatal编程技术网

Javascript 如何在测试中引用未初始化的全局变量?

Javascript 如何在测试中引用未初始化的全局变量?,javascript,typescript,unit-testing,jasmine,Javascript,Typescript,Unit Testing,Jasmine,我试图对我的一些代码进行单元测试,但我的代码引用了这个我无法直接访问的库。我的代码在运行时可以访问它,但不能在编译时访问。在本例中,库代码称为setup。我没有使用网页包或任何东西,只是TS节点 产品代码: declare let setup: any; setup.rest = (): void => { // this signature can't change } 测试代码: import "jasmine"; describe("App", () => {

我试图对我的一些代码进行单元测试,但我的代码引用了这个我无法直接访问的库。我的代码在运行时可以访问它,但不能在编译时访问。在本例中,库代码称为
setup
。我没有使用网页包或任何东西,只是TS节点

产品代码:

declare let setup: any;

setup.rest = (): void => { // this signature can't change

}
测试代码:

import "jasmine";

describe("App", () => {
    beforeEach(() => {
        setup = {};
    })

    it("should have a rest function", () => {
        setup.rest();
    });
});
我正在用茉莉作为试跑者。运行测试时,出现以下错误:

ReferenceError:未定义安装程序


我如何让我的测试初始化这个
设置
变量并与我的生产代码共享它?

如果我知道你想初始化函数
super

你可以给她加一个间谍

const setupSpy = TestBed.get(setup);
setupSpy.rest.and.returnValue(add here object/variable to return)


但是,如果先运行prod代码,它就会出错。该设置在测试上下文中不存在。如何防止prod代码在测试之前运行?