一个简单的问题,是否可以在提供者端定义多个类以测试每个端点的不同交互。假设提供者公开了具有两个端点的API:/api/v1/users
和/api/v1/friends
。
我们还假设我们有两个消费者服务,每个服务都定义了一份契约合同。使用者A
同时使用提供程序API,而使用者B
仅需要/api/v1/users/:id
。问题是如何分别为每个端点定义提供者测试?
在单个测试中运行测试意味着我们需要为所有service
/ clients
/ repository
/ etc等定义模拟。两个端点上每个@State
使用的类-这真的很混乱而且很难维护。
我发现的一种解决方案或更好的解决方法是使用@State
值作为目标端点,并使用参数来携带所有其余值。但是好奇地想知道我是否从文档中遗漏了任何东西,或者是否有最佳实践。
当我们定义多个API版本时,即引入/api/v2/users
时,也会出现相同的问题。
另一种选择是不在微服务之后而是在该微服务的每个端点之后调用提供程序。因此,我们将拥有三对consumerFoo -> providerFoo
,consumerBar -> providerFoo
,consumerFoo -> providerFoo.users
,而不是两对consumerBar -> providerFoo.users
和consumerBar -> providerFoo.friends
。这样可以提高依赖性矩阵的粒度级别,但也可能会增加一些混乱。