我正在尝试使用Cypress存根一个模块。这是我到目前为止尝试过的,但不起作用。
这是我的组件/页面的简短版本
// SomeComponent.jsx
import { useSomething } from './useSomething'
const SomeComponent = () => {
// useSomething is a custom hook
const { data, error } = useSomething()
const renderData = () => {
// map the data into an array of JSX elements
return data.map(...)
}
return (
<div>
{renderData()}
</div>
)
}
export default SomeComponent
这是我定制的钩子的样子
// useSomething.js
import { useState } from 'react'
import { getData } from './db'
export const useSomething = () => {
const [data, setData] = useState({})
const [error, setError] = useState()
useEffect(() => {
getData().then(data => {
setData(data)
}).catch(err => {
setError(error)
})
// ... some other unrelated code here
}, [])
return { data, error }
}
下面是getData的外观
// getData.js
export const getData = () => {
const data = // some API call from external services
return data
}
方法通过db.js(实际上是db/index.js)公开
// db.js
export * from './getData'
我正在尝试存根getData。js使e2e测试更加一致。这就是我所做的。
// something.spec.js
// I'm writing @src just to keep the code sample here short, it's the same file as the db.js I write above
import * as db from '@src/db'
...
// this is how I try to do the stubbing
cy.stub(db, 'getData').resolves(something)
...
上面的存根不起作用。运行测试时,对外部服务的API调用仍在进行。文档本身让我推断我应该这样写,但它不起作用。
可以在窗口上公开db
// useSomething.js
import { useState } from 'react'
import * as db from './db'
const { getData } = db;
if (window.Cypress) { // only when testing
window.db = db;
}
在测试中
cy.window().then(win => {
cy.stub(win.db, 'getData').resolves(something);
})
或使用拦截存根API调用。
我创建了express应用程序,有一条路线可以使用许多中间件: 这是我的中间件。js: 它工作得很好。但当我试着写测试时遇到了问题。这是我的测试,我使用mocha、chai、supertest和sinon: 问题是什么 您可以看到有3个存根,1个用于,2个用于在路由的同一个文件中。 问题是,2个存根工作,而1个用于<代码>中间件。saveUser不工作,请始终触发原始用户。 我想,当我调用setu
我需要为使用CXF组件调用SOAP web服务的Camel路由编写一些单元测试。 跳过SOAP请求并返回stubbed响应的最干净的方法是什么? 我尝试使用模拟endpoint,但是请求要么被传递到真正的endpoint,要么在处理器回调时被忽略。 我用Blueprint配置Camel,并用camel-test-blueprint 2.17.1运行它。这就是我的Blueprint.xml配置的样子
我正在用cypress做E2E测试。我必须计算表中的行数,每种情况都不同。 在正常的javascript中,我写这个只是为了得到列的总行数 不幸的是,在柏树我得到以下错误: 我试着这样数数但一无所获 我不知道它从哪里返回了行数
问题内容: 该赛普拉斯文档说可以 公开数据存储区(例如Redux中的数据存储区),以便您可以通过编程方式直接从测试代码中更改应用程序的状态。 我还观看了Kent C. Dodds先生的测试课程,他提到可以使用Cypress中的现有数据来初始化redux存储(在测试之前或之中,不确定) 我浏览了几乎所有的文档并进行了谷歌搜索,除了在介绍页面上将其作为关键区别之一外,我只是找不到任何实际执行此操作的参
问题内容: 我需要测试一个函数,该函数需要使用urllib.urlopen(它也使用urllib.urlencode)来查询外部服务器上的页面。服务器可能已关闭,页面可能已更改;我不能依靠它进行测试。 控制urllib.urlopen返回的最佳方法是什么? 问题答案: 另一个简单的方法是让您的测试覆盖urllib的功能。例如,如果您的模块具有 您可以这样定义测试: 然后,当您的测试调用中的函数时,
问题内容: 我曾经使用过JUnit和Mocks,但我想知道,JUnit中的Mocks和Stub之间有什么区别,以及如何在JUnit,Java中使用Stub?作为具有EasyMock,Mockito等的Mocks,Stubs在Java中使用什么? 请提供Java中的存根示例代码。 问题答案: 要在junit中使用存根,您不需要任何框架。 如果您想存根某些接口,只需实现它: 然后创建一个新的存根对象并