Node.js Jasmine spy on NodeJS上的导出函数
我在使用Jasmine监视NodeJS(v9.6.1)应用程序中导出的函数时遇到问题 该应用程序是用typescript编写的,在dist文件夹中用tsc传输,作为javascript执行 应用程序 我有一个Foo-utils文件(Foo.utils.ts),用于导出函数: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)
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
方法,检查它是否被调用,并返回模拟值。我不想在单元测试中读取文件(甚至根本不想使用realgetData
方法)
用于测试的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类,该类导出静态方法并监视它们
问题
- 我做错什么了吗
- 是否可以监视(并替换)导出的函数
- 在类中使用静态方法(而不是导出函数)有效吗
- 还有别的办法吗
fooutils
时,你的意思是spyOn(fooutils,“getData”)
,对吗?我希望这样work@pushkin对不起,这是一个真正的很长的时间,我不再在这个项目上了,但我想我尝试了是的(也许现在它的工作)。