gpt4 book ai didi

javascript - 为多个响应集测试相同的 API

转载 作者:搜寻专家 更新时间:2023-10-31 23:58:54 25 4
gpt4 key购买 nike

我们一直在尝试测试从一个微服务公开的 API(例如 GET/contacts),该 API 正在被另一个微服务使用。

为了避免集成测试,我们创建了消费者驱动的契约测试,其中消费者微服务创建契约并将它们发布到代理,生产者将在代理处单独验证契约。

我们使用了 Pact IO实现这一目标,到目前为止效果非常好。

现在我们在尝试进行详尽测试时遇到了问题,我们希望查看如何从 GET/contacts 返回空列表。

问题是:在添加交互时,我们可以使用 Provider States 但我们无法找到一种方法来区分编写测试以从 GET/contacts 获取联系人列表一次和在另一个测试中获取空列表。

这就是我们在消费者微服务中创建 pact 测试的方式:

mockServer.start()
.then(() => {
provider = pact({
// config
})
return provider.addInteraction({
state: 'Get all contacts',
uponReceiving: 'Get all contacts',
withRequest: {
method: 'GET',
path: '/contacts',
headers: {
Accept: 'application/json; charset=utf-8'
}
},
willRespondWith: {
status: 200,
body: //list of all contacts
}
})
.then(() => {
return provider.addInteraction({
state: 'Get empty list of contacts',
uponReceiving: 'Get empty list of contacts',
withRequest: {
method: 'GET',
path: '/contacts',
headers: {
Accept: 'application/json; charset=utf-8'
}
},
willRespondWith: {
status: 200,
body: [] // empty list
}
})
})

我们无法在测试中找到区分这些交互的方法! :(

如有任何帮助,我们将不胜感激!

谢谢。

最佳答案

假设您使用的是 Mocha 之类的东西,您应该将这些交互分成单独的测试 - 例如在与您正在运行的测试用例相关的每个 describe block 中调用 addInteraction(可能在 before 中以使您的测试更清晰)。

您的一般结构可能如下所示(伪代码):

context("Contacts exist")
describe("call some API")
before()
provider.addInteraction(interactionWithContacts)

it("Returns a list of contact objects")
# your test code here
# Verify - this will also clear interactions so
# your next test won't conflict
provider.verify()

context("No contacts exist")
describe("call some API")
before()
provider.addInteraction(interactionWithNoContacts)

it("Returns an empty list of contacts")
# your test code here
# Verify - this will also clear interactions so
# your next test won't conflict
provider.verify()

关于javascript - 为多个响应集测试相同的 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44331178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com