stub 相关问题

对象,方法或函数的替换实现,以便删除外部依赖项。

Sinon stub - 存根用 swagger 生成的 axios api

我有一个由 swagger open api 生成的文件。我正在编写一些测试并第一次使用 sinon 存根。我想知道如何从一个类中存根 api 调用: 导出类 Api 我有一个由 swagger open api 生成的文件。我正在编写一些测试并第一次使用 sinon 存根。我想知道如何从一个类中存根 api 调用: export class Api<SecurityDataType extends unknown> extends HttpClient<SecurityDataType> { case = { /** * @description Create new case * * @tags case-controller * @name CreateCase * @request POST:/case * @secure */ createCase: (data: CreateCaseRequest, params: RequestParams = {}) => this.request<CreateCaseResponse, any>({ path: `/case`, method: "POST", body: data, secure: true, type: ContentType.Json, ...params, }), findMetadataForCase: (caseNumber: string, params: RequestParams = {}) => this.request<CaseDto, void>({ path: `/case/${caseNumber}`, method: "GET", secure: true, ...params, }), } } 我正在像这样实例化这个 Api: import { Api as CaseApi } from "../api/CaseApi"; export const CASE_API = useApi(new CaseApi({ baseURL: environment.url.case }), "case", "fss"); 我也做了一个处理这个api的文件: export const useApiData = () => { const [networkError, setNetworkError] = useState<string>(null); const fetchCase = async (caseNumber: string) => { const case = await CASE_API.case.findMetadataForSak(caseNumber); return case.data; }; const getCaseAndRoles = (caseNumber: string) => { const { data: sak } = useQuery({ queryKey: `case-${caseNumber}`, queryFn: () => fetchCase(caseNumber), staleTime: Infinity, }); const { data: roles } = useQuery( "roles", ({ signal }) => fetchPersons(case, signal).then((persons) => mapPersonsToRoles(case, persons)), { staleTime: Infinity, enabled: !!case } ); return { case: case, roles: roles }; }; const api = { getCaseAndRoles, }; return { api, networkError }; }; 我想对一个从 getCaseAndRoles 钩子调用 useApiData 的组件进行单元测试。 export const CasePage = () => { const { activeStep, setActiveStep, caseNumber } = useCase(); const { api, networkError } = useApiData(); const { case, roles } = api.getCaseAndRoles(caseNumber); return (...some jsx 我想用假数据测试这个组件: describe("CasePage", () => { it("should render", async () => { mockCase(); render(<CasePage />); await waitFor(() => expect(document.querySelector("button")).not.to.be.null); }); }); 但是,我不确定如何为它创建模拟存根: export function mockSak(sinonSandbox: SinonSandbox = sinon.createSandbox()) { const caseApiMock = sinon.stub(useApiData()).returns({ getCaseAndRoles: () => {} }); sinonSandbox.stub(caseApiMock, "getCaseAndRoles").callsFake(() => { return Promise.resolve(caseTestData); }); return sinonSandbox; } 但是,那是行不通的,我在运行测试时遇到错误: Warning: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons: 1. You might have mismatching versions of React and the renderer (such as React DOM) 2. You might be breaking the Rules of Hooks 3. You might have more than one copy of React in the same app See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem. 我也试过这个: export function mockCase(sinonSandbox: SinonSandbox = sinon.createSandbox()) { sinonSandbox.stub(useApiData).callsFake(() => { return { api: { getCaseAndRoles: () => Promise.resolve(caseTestData) } }; }); return sinonSandbox; } 但是,然后我得到以下错误: TypeError: sinonSandbox.stub(...).callsFake is not a function 我也试过这个: export function mockSak(sinonSandbox: SinonSandbox = sinon.createSandbox()) { sinonSandbox.stub(CaseApi, "case").value({ findMetadataForCase: () => Promise.resolve(caseTestData), }); return sinonSandbox; } 但是,然后我得到一个错误: TypeError: Cannot stub non-existent property case 这很奇怪,因为如果我这样做 CaseApi.property.case 我可以看到它具有该属性。 我怎样才能存根这个 api 调用?

回答 0 投票 0

如何在使用sinon的单元测试中对猫鼬模型方法进行存根

我有一个getTask()方法,如下所示:const Task = require('./ model'); const User = require('../ users / model')module.exports =异步函数getTask(key){const task = await Task ....

回答 1 投票 0

Typescript:如何从导入的名称空间对函数进行存根

我有以下文件//定义文件导出名称空间Foo {导出函数foo(){bar(); } export function bar(){抛出“尚未实现”}} //测试文件导入{...

回答 1 投票 0

如何使用rspec测试写入文件?

我有这样的函数代码:Dir.mkdir('config')除非File.exist?('config')File.open('config / brakeman.yml','wb')做| file | file.write(response.body)如何测试...

回答 1 投票 0

SinonJS存根在.on范围内不起作用

it('POST / direct / bulk',function(){const file = getFile('notif-direct-bulk.csv')sinon.stub(notificationService.constructor.prototype,'validateNotification')。resolves(true) sinon.stub(...

回答 1 投票 0

故事书中有两次Stub axios

我有几个使用Axios调用的组件,我试图“存根”那些功能,但是,在故事书“尝试包装已经包装的get”中收到以下错误。我不知道...

回答 1 投票 0

如何对从包中导入的方法进行存根和间谍?

我是JavaScript和Python开发人员。这是使用jestjs测试框架的单元测试代码片段:index.ts:从“ dotenv”导入dotenv;导出类OsEnvFetcher {builder(){...

回答 1 投票 -2

单元测试无效方法

我有一个模型类TestCaseModel,看起来像公共类TestCaseModel {List 条件= new ArrayList (); public void addCondition(String condition){...

回答 1 投票 0

打字稿存根中的Sinon

打字稿中的Sinon无法正确导入子模块..请找到以下代码以下代码是文件parent.ts import'./sub-module'class Parent {\ ** * name * / public ...

回答 1 投票 0

如何对返回设置rspec的方法进行存根

我需要对返回集合的方法async_actions_set进行存根处理。我该怎么做?我尝试了多种方法,例如class_name.any_instance.stubs(:async_actions_set?)。returns([1,2] .to_set)在我的模型中,此...

回答 1 投票 0

Wiremock-第一次映射错误时重定向到代理

我正在尝试使用Wiremock 2.24.1根据请求路径动态返回不同的body文件,如果在本地找不到,我想调用一个外部资源(作为代理)。我正在使用...

回答 1 投票 0


我想使用Go返回我已经拥有的XML响应

我想打印出一个我已经做过的xml响应,而不是你好打印出整个响应,任何人都知道我能做到这一点吗? import(“ fmt”“ net / http”)func ...

回答 1 投票 0

nodejs中的Azure Redis缓存的编写单元测试

我正在尝试使用mocha框架编写单元测试用例,在这里我必须模拟一个蔚蓝的redis缓存...有人可以帮助我如何使用node.js模拟用于单元测试用例目的的缓存。 ...

回答 1 投票 0

PyCharm是否未为类插入文档字符串存根?

我有以下代码:类注意:def __init __(self,note = None,duration = None,start_time = None):self.note =注意self.duration =持续时间self.start_time = ...

回答 1 投票 6

多次嘲笑时出现Mockito UnfinishedStubbingException

我想在我的Invoice类中存入methot generateReferenceNumber():public class Invoice {private String id;私有字符串referenceNumber;私人Date issueDate;私人...

回答 1 投票 0

如何使用Rspec测试后台作业(Sidekiq)?

我的应用程序很大一部分依赖于后台作业来处理用户的网站,因此我需要编写一些测试来涵盖这些网站。第一个问题是如何测试Sidekiq工作者类中的代码,...

回答 3 投票 13

stub.getQueryResult(queryString)如何获得100多个结果

让resultsIterator =等待ctx.stub.getQueryResult(JSON.stringify(queryString));此函数在存根中仅返回100个结果。我要超过100。如何归档?

回答 1 投票 1

node-postgres客户端的Sinon存根

我正在用TypeScript编写一个Node应用程序,该应用程序正在查询Postgres数据库。在单元测试中,我无法模拟查询功能。我的单元代码如下所示:class MyClass {/ *更多...

回答 1 投票 0

Mockito:以复杂对象作为参数的存根方法

也许这是一个新手问题,但找不到答案。我需要使用Mockito存根方法。如果该方法具有“简单”参数,那么我可以做到。例如,具有两个...

回答 3 投票 9

© www.soinside.com 2019 - 2024. All rights reserved.