用 Jest 测试抛出
Testing throw with Jest
我有以下功能要测试:
export const createContext = async (context: any) => {
const authContext = await AuthGQL(context)
console.log(authContext)
if(authContext.isAuth === false) throw 'UNAUTHORIZED'
return authContext
}
我正在尝试通过以下方式测试上述功能:
describe('Testing Apollo service file', () => {
beforeAll(async () => {
await mongoConnect()
})
test('test apollo context setup and configuration', () => {
const mockContext = {
req: {
headers: {
}
}
} as ExpressContext
expect(() => createContext(mockContext)).toThrow()
})
afterAll(async () => {
await mongoDisconnect()
})
})
我的 beforeAll
afterAll
调用只是 connecting/disconnecting 来自将用于数据目的的本地数据库。我传递的 mockContext
通常会包含更多内容,但出于测试的目的,我故意缺少字段以确保 createContext
抛出 'UNAUTHORIZED'
这是测试的终端输出:
已更新
根据 Jest 文档并进行更多测试:https://jestjs.io/docs/using-matchers 我编写了另一个抛出错误的函数并通过以下行进行了测试:
// test sync function
function compileAndroidCode() {
throw new Error('UNAUTHORIZED');
}
// Expect function that tests the thrown error
expect(() => compileAndroidCode()).toThrow('UNAUTHORIZED')
所以我似乎在测试中弄乱了 async/await 语法。
您有一个 async
功能,因此您需要 await
它。像这样尝试:
test('test apollo context setup and configuration',async () => {
const mockContext = {
req: {
headers: {
}
}
} as ExpressContext
await expect(createContext(mockContext)).rejects.toThrow()
})
我有以下功能要测试:
export const createContext = async (context: any) => {
const authContext = await AuthGQL(context)
console.log(authContext)
if(authContext.isAuth === false) throw 'UNAUTHORIZED'
return authContext
}
我正在尝试通过以下方式测试上述功能:
describe('Testing Apollo service file', () => {
beforeAll(async () => {
await mongoConnect()
})
test('test apollo context setup and configuration', () => {
const mockContext = {
req: {
headers: {
}
}
} as ExpressContext
expect(() => createContext(mockContext)).toThrow()
})
afterAll(async () => {
await mongoDisconnect()
})
})
我的 beforeAll
afterAll
调用只是 connecting/disconnecting 来自将用于数据目的的本地数据库。我传递的 mockContext
通常会包含更多内容,但出于测试的目的,我故意缺少字段以确保 createContext
抛出 'UNAUTHORIZED'
这是测试的终端输出:
已更新
根据 Jest 文档并进行更多测试:https://jestjs.io/docs/using-matchers 我编写了另一个抛出错误的函数并通过以下行进行了测试:
// test sync function
function compileAndroidCode() {
throw new Error('UNAUTHORIZED');
}
// Expect function that tests the thrown error
expect(() => compileAndroidCode()).toThrow('UNAUTHORIZED')
所以我似乎在测试中弄乱了 async/await 语法。
您有一个 async
功能,因此您需要 await
它。像这样尝试:
test('test apollo context setup and configuration',async () => {
const mockContext = {
req: {
headers: {
}
}
} as ExpressContext
await expect(createContext(mockContext)).rejects.toThrow()
})