Luk*_*arr 5 typescript jestjs cloudflare-workers
Cloudflare Workers 的TypeScript模板存储库有一个模拟 GET 请求的测试,通过Request实例化来模拟handleRequest.
但是,我后来修改了模板以将原始数据传递FetchEvent给handleRequest方法,而不是FetchEvent.request(这是默认的)。现在,我需要FetchEvent在测试中实例化以传递到handleRequest,而不是Request。
我可以FetchEvent从哪里进口?我的第一个想法是添加node-fetch为开发依赖项,但看起来该库没有提供实现FetchEvent。
有没有一种方法可以模拟FetchEvent而不需要诉诸另一个外部依赖项(即在 Cloudflare Workers 库中)?
小智 2
import { handleEvent } from '../src/handler'
import makeServiceWorkerEnv from 'service-worker-mock'
declare var global: any
function createEvent(request: Request): FetchEvent {
// @ts-ignore Sadly the typing seem to be off here, creating a FetchEvent is valid in a test environment.
return new FetchEvent('fetch', { request })
}
describe('handle', () => {
beforeEach(() => {
Object.assign(global, makeServiceWorkerEnv())
jest.resetModules()
})
test('handle GET', async () => {
const fetchEvent: FetchEvent = createEvent(
new Request('/', { method: 'GET' }),
)
const result = await handleEvent(fetchEvent)
expect(result.status).toEqual(200)
})
})
Run Code Online (Sandbox Code Playgroud)
让我知道它是否有效
| 归档时间: |
|
| 查看次数: |
589 次 |
| 最近记录: |