如何使用 Dapr 进行单元测试?

Mog*_*og0 7 unit-testing moq xunit .net-5 dapr

我有一个类正在尝试进行单元测试,但它使用 DaprClient 对象(来自 SDK),该对象在我的单元测试环境中不起作用。我想创建一个模拟并使用它,但 DaprClient 实现的唯一接口是 IDisposable。

有没有办法模拟 DaprClient 进行单元测试?

我能想到的唯一解决方案是将 DaprClient 包装在一个带有接口的类中,并在任何地方使用这个包装器。这感觉真的很混乱,每次我想在 DaprClient 上使用新方法时都需要更新包装器。

我对其他可能绕过问题的解决方案持开放态度,但我更喜欢用模拟类型方法进行简单替换。

我在 Windows 上的 Visual Studio 2019 中使用 .Net 5、xUnit 和 Moq(尽管一些团队成员使用 Mac,因此需要在两个平台上工作)。

在此特定实例中,我使用DaprClient.GetBulkSecretAsync方法,但如果可能的话,我想要一个可以在其他地方使用的解决方案。

lar*_*uch 1

您需要使用两个选项之一

  • 一个使用填充程序的模拟框架,因为它们根据具体类创建模拟对象。Visual Studio Enterprise 和其他付费框架的假货都有它。可供选择的开源框架较少。Pose是一种可能通过Shimmy提供的选项
  • 将类包装在一个使用可用于模拟的接口的类中(最坏的可能性)