赛普拉斯:无法用一个基本的例子来存根。我可能会错过什么?
Cypress: Not able to stub with a basic example. What might i be missing?
出于某种原因,我无法在此处存根。我在这里将我的代码减少到几乎完全一样。这应该根据文档工作,但我想知道我是否遗漏了打字稿/反应挂钩的更详细信息?感觉完全不像这种情况,但谁知道呢。如果您正在阅读本文并占用您的时间,请提前致谢。我很欣赏你所做的。这是我的例子:
// connection.ts (the method to stub)
export const connectFn = async () => {
return 'i should not be here'
}
// ./reactHook.ts
import { connectFn } from './connection'
export const useMyHook = () => {
const handleConnect = async () => {
const result = await connectFn()
console.log(result)
// expected: 'i have been stubbed!'
// actual: 'i should not be here
}
return {
handleConnect
}
}
// ./App.ts
export const App = () => {
const { handleConnect } = useMyHook()
return <button onClick={handleConnect}>Connect</button>
}
// ./cypress/integration/connection.spec.ts
import * as myConnectModule from '../../connection'
describe('stub test', () => {
it('stubs the connectFn', () => {
cy.stub(myConnectModule, 'connectFn').resolves('i have been stubbed!')
cy.get('[data-testid=connect-btn]').click()
// assertions about the view here...
})
})
我以为我很了解 cypress 和 Sinon 文档。我读过柏树需要一个对象到存根而不是直接命名的导出 - 因此 * 作为导入。我也尝试了各种方式来导出它。我直接使用文档中的示例无济于事。然后我认为这可能是打字稿问题,但似乎并非如此。我已经将我的实际代码减少到几乎这个例子。我什至删除了除测试日志以外的所有内容,但我仍然没有得到它。
要成功存根,您需要存根(替换)相同的实例。
在reactHook.ts
import { connectFn } from './connection'
if (window.Cypress) {
window.connectFn = connectFn
}
测试中
cy.window().then(win => {
cy.stub(win, 'connectFn').resolves('i have been stubbed!')
cy.get('[data-testid=connect-btn]').click()
...
}}
顺便说一句 useMyHook
意味着一个 React 钩子,如果是这样你可能需要一个 cy.wait(0)
来释放主 JS 线程并允许钩子 运行.
出于某种原因,我无法在此处存根。我在这里将我的代码减少到几乎完全一样。这应该根据文档工作,但我想知道我是否遗漏了打字稿/反应挂钩的更详细信息?感觉完全不像这种情况,但谁知道呢。如果您正在阅读本文并占用您的时间,请提前致谢。我很欣赏你所做的。这是我的例子:
// connection.ts (the method to stub)
export const connectFn = async () => {
return 'i should not be here'
}
// ./reactHook.ts
import { connectFn } from './connection'
export const useMyHook = () => {
const handleConnect = async () => {
const result = await connectFn()
console.log(result)
// expected: 'i have been stubbed!'
// actual: 'i should not be here
}
return {
handleConnect
}
}
// ./App.ts
export const App = () => {
const { handleConnect } = useMyHook()
return <button onClick={handleConnect}>Connect</button>
}
// ./cypress/integration/connection.spec.ts
import * as myConnectModule from '../../connection'
describe('stub test', () => {
it('stubs the connectFn', () => {
cy.stub(myConnectModule, 'connectFn').resolves('i have been stubbed!')
cy.get('[data-testid=connect-btn]').click()
// assertions about the view here...
})
})
我以为我很了解 cypress 和 Sinon 文档。我读过柏树需要一个对象到存根而不是直接命名的导出 - 因此 * 作为导入。我也尝试了各种方式来导出它。我直接使用文档中的示例无济于事。然后我认为这可能是打字稿问题,但似乎并非如此。我已经将我的实际代码减少到几乎这个例子。我什至删除了除测试日志以外的所有内容,但我仍然没有得到它。
要成功存根,您需要存根(替换)相同的实例。
在reactHook.ts
import { connectFn } from './connection'
if (window.Cypress) {
window.connectFn = connectFn
}
测试中
cy.window().then(win => {
cy.stub(win, 'connectFn').resolves('i have been stubbed!')
cy.get('[data-testid=connect-btn]').click()
...
}}
顺便说一句 useMyHook
意味着一个 React 钩子,如果是这样你可能需要一个 cy.wait(0)
来释放主 JS 线程并允许钩子 运行.