我有nestjs应用程序,对于单元测试,我需要测试从azure存储文件共享获取文件数据,因为我使用@azure/存储-文件共享。但是我不想访问实际的存储帐户,因为在我们的github管道运行程序中,它是不可访问的。是否有一种在本地/cicd管道上测试存储文件共享而不尝试访问实际服务的方法?我在用玩笑写单元测试。
我也想用蓝色巴士做同样的事。
发布于 2022-06-08 17:13:11
这在很大程度上取决于你如何设置你的应用程序,但你最好的选择是模仿存储和服务总线。请参阅医生们来模拟一个完整的npm模块,但是一旦您这样做了,任何对Azure服务的调用都不会发生,它们将什么也不做,您仍然可以测试调用是否已经完成。
但是,如果您的测试依赖于数据--它们从存储中提取数据--我将确保您将数据层分隔到单独的接口中。例如:
export const loadData = (key) => {
// use Storage library to get the file
// ...
return data;
}
export const saveData = (key) => {
// use Storage library to save the file
// ...
return success;
}如果您已经隐藏了像这样的接口后面的文件实现,那么现在只需模拟loadData()
import * from './myDataInterface';
// ... more code ...
// 'my data' could be a string, object, whatever you need the loaded file to be to set up your test
const mock = jest.spyOn(myDataInterface, 'loadData').mockReturnValue('my data');现在,当您正在测试的代码调用loadData()时,它将运行模拟并返回您期望的结果,而不是调用存储模块。
更多关于在开玩笑的医生中嘲弄,我不认为这是100%符合您的需要,但希望这是一个好的开始。
https://stackoverflow.com/questions/72544833
复制相似问题