我在开发过程中经常遇到这个问题,在 Windows 上本地运行 PactNet,我不确定是否有更好的方法来处理它。
这是我的场景......
Contract.MockProviderService
.UponReceiving("...example description...")
.Given("...example state...")
.With(ProviderServiceFactory.Request(HttpVerb.Get, "/endpoint"))
.WillRespondWith(ProviderServiceFactory.Response(200, new {
some_value = 22
}));
Contract.MockProviderService
.UponReceiving("...example description...")
.Given("...example state...")
.With(ProviderServiceFactory.Request(HttpVerb.Get, "/endpoint"))
.WillRespondWith(ProviderServiceFactory.Response(200, new {
some_value = 123
}));
具有相同描述的交互(“...示例描述...”)和 提供者状态(“...示例状态...”)但不同的响应主体 已经被使用了。请使用不同的描述或供应商 状态,或删除交互中的任何随机数据。
是的......我知道,我想改变身体但保持描述和提供者状态不变。
似乎我所能做的就是在我再次运行测试之前对我的描述和/或提供者状态进行一些任意更改。或者我必须重新启动我的机器以使 Pact 服务器恢复到干净状态。
有没有更简单的方法告诉 Pact 服务器擦除并重置所有先前定义的交互?也许我可以在单元测试会话开始时调用它?
只是看看可用的方法,我试过
MockProviderService.ClearInteractions()
和 MockProviderService.Stop(); MockProviderService.Start();
没有运气。
您使用的是什么版本的 Pact .NET?如果使用 4.x.x 或更高版本,您需要清除契约文件,因为它总是将交互合并到契约文件中,默认情况下不会覆盖交互。
根据问题,我认为您使用的是以前的版本。
有没有试过提前清空pact文件?您是指定写入模式还是使用默认模式(覆盖)?
要么那样,要么我必须重新启动我的机器以使 Pact 服务器恢复到干净状态。
这绝对不是预期的,并且告诉我 Pact Mock 服务器 not 在测试运行之间正确关闭。
你试过升级到最新的吗? 4.x.x 不需要所有这些额外的生命周期方法,应该可以简化很多设置。