Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.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
Node.js Jasmine spy on NodeJS上的导出函数_Node.js_Typescript_Jasmine_Spy - Fatal编程技术网

Node.js Jasmine spy on NodeJS上的导出函数

Node.js Jasmine spy on NodeJS上的导出函数,node.js,typescript,jasmine,spy,Node.js,Typescript,Jasmine,Spy,我在使用Jasmine监视NodeJS(v9.6.1)应用程序中导出的函数时遇到问题 该应用程序是用typescript编写的,在dist文件夹中用tsc传输,作为javascript执行 应用程序 我有一个Foo-utils文件(Foo.utils.ts),用于导出函数: import {readFile} from "fs"; export function getData(filePath: string){ const data = readFile(filePath)

我在使用Jasmine监视NodeJS(v9.6.1)应用程序中导出的函数时遇到问题

该应用程序是用typescript编写的,在dist文件夹中用tsc传输,作为javascript执行

应用程序 我有一个Foo-utils文件(Foo.utils.ts),用于导出函数:

import {readFile} from "fs";
export function getData(filePath: string){
    const data = readFile(filePath)
    // various checks happens here.
    return data;
}
以及Bar.ts文件中的Bar类:

import {getData} from "../utils/foo.utils
export class Bar {
        public do(){
    // ... does stuff
    const data = getData(filePath);
    // etc.
    }
}
试验 现在,我试图监视导出的
getData
方法,检查它是否被调用,并返回模拟值。我不想在单元测试中读取文件(甚至根本不想使用real
getData
方法)

用于测试的bar.spec.ts文件:

describe("Bar", ()=>{
    let bar: Bar;
    beforeEach(function() {
        bar = new Bar();
    })
    it(" should do stuff", ()=>{
        const spy = spyOn(???, "getData").and.returnValue([]);
        bar.do();
        expect(spy).toHaveBeenCalled();
    })
});
问题 由于它是一个NodeJS应用程序,我一直试图使用
global
作为监视对象,但我得到了错误:

错误::getAttachementData()方法不存在

我也试着补充一下

import * as fooutils from ".../src/utils/foo.utils
并监视
fooutils
,但我仍然执行导出的函数(当它试图读取文件时崩溃…)

现在我有点迷路了。从我发现的情况来看,模拟导出的函数实际上是不可能的(即使它们应该被添加到
global
对象中)。 我考虑重构utils文件,创建一个utils类,该类导出静态方法并监视它们

问题
  • 我做错什么了吗
  • 是否可以监视(并替换)导出的函数
  • 在类中使用静态方法(而不是导出函数)有效吗
  • 还有别的办法吗

当你说spy on
fooutils
时,你的意思是
spyOn(fooutils,“getData”)
,对吗?我希望这样work@pushkin对不起,这是一个真正的很长的时间,我不再在这个项目上了,但我想我尝试了是的(也许现在它的工作)。