类型错误:无法存根不存在自己的财产获取
declare namespace NodeJS {
interface Global {
fetch: (url: string, options?: Object) => Promise<any>;
}
}
declare let global: NodeJS.Global;
it("should handle fetch throwing an error message", () => {
const fetchFailure = "Test fetch error!";
const fetchStub: sinon.SinonStub =
sinon.stub(global, "fetch").callsFake(
(url: string, options?: Object): Promise<any> => {
return new Promise((resolve, reject) => {
throw (fetchFailure);
});
});
try {
return getConfigTest.getData(arguments)
.then(() => {
expect.fail(null, null, "Attempt to retrieve when no configuration exists should have thrown exception");
})
.catch((reason) => {
if (reason instanceof someError) {
expect(reason).to.equals("throwing error");
} else {
expect(reason).instanceOf(Error);
expect(reason.message).to.equals("The request failed.");
}
});
} finally {
fetchStub.restore();
}
});
注意:我正在调用getData方法,并且getData返回另一个方法handle-fetch,而内部句柄fetch'fetch'正在使用,我在这里进行了说明。
我正在Pact集成测试中使用此方法。我捻熄取方法和不符合实际的方法进行交互回我自己的数据。
有人可以帮我吗?如果您需要任何额外的信息。请让我知道在评论部分?
更新:-
export async function getData(arguments): Promise<dataConfig> {
const json: any = await handle-fetch(`path_to_Api);
return json as dataConfig;
}
export async function handle-fetch<T>(arguments): Promise<T> {
let response: any;
let apiErr: any;
options = _.merge({
headers: {
"Accept": "application/json"
}
}, options);
try {
response = await fetch(url, options); //**here is the method which i want to stub**
我已经写了一些测试,以确保正确的ID。但是我正在编写测试,以防万一无法获取handle-fetch方法。
在我的另一个节点项目中,我已经这样做,并且运行良好。但是,这是反应项目。我是否需要安装默认情况下无法获取的特定内容。
答案 0 :(得分:1)
global
,那么我认为您不能这样做。尝试自己运行该代码后,fetch
确实没有应用于global
对象。您要达到什么目标?
另一种选择是创建一个新的协作服务对象来执行获取,然后模拟出来。