首页 新闻 会员 周边

.NET: 在集成测试中如何 mock dapr

0
悬赏园豆:30 [待解决问题]

想在集成测试中测试通过 pubsub 发布/订阅消息的代码是否正常,请问如何 mock dapr?

dudu的主页 dudu | 高人七级 | 园豆:30994
提问于:2023-04-16 17:22
< >
分享
所有回答(2)
0

要在集成测试中测试 Dapr 的 Pub/Sub 功能,可以使用 Dapr 提供的 Mock API。Mock API 是一个在本地模拟 Dapr API 的工具,可以在不连接到 Dapr 运行时的情况下进行测试。

以下是一个示例,演示如何使用 Mock API 来测试 Pub/Sub 功能:

首先,你需要将 Dapr SDK 添加到你的测试项目中。可以使用 NuGet 包管理器或者手动添加 DLL 文件。

接着,创建一个 DaprClient 实例来连接到 Mock API:

arduino

using Dapr.Client;

var daprClient = new DaprClientBuilder()
.UseHttpEndpoint("http://localhost:3500/v1.0")
.UseJsonSerializationOptions(new JsonSerializerOptions())
.Build();
使用 daprClient 对象来发布和订阅消息,如下所示:
csharp

// 发布消息
await daprClient.PublishEventAsync("topic1", new { message = "Hello, world!" });

// 订阅消息
var subscription = daprClient.CreateSubscription<TopicMessage>("topic1", "subscription1", async message =>
{
Console.WriteLine(message.Data.Message);
});

// 等待一段时间,以便检查是否收到了消息
await Task.Delay(TimeSpan.FromSeconds(1));
注意,在使用 Mock API 时,需要将 UseHttpEndpoint 方法的参数设置为 http://localhost:3500/v1.0,这是 Mock API 的默认端点地址。另外,需要安装 Microsoft.AspNetCore.WebUtilities NuGet 包,以便使用 JsonSerializerOptions。

使用上述方法,你可以在集成测试中测试 Dapr 的 Pub/Sub 功能。

Technologyforgood | 园豆:5675 (大侠五级) | 2023-04-17 20:08
0

在集成测试中,为了测试通过 pubsub 发布/订阅消息的代码是否正常,您可以使用 Dapr 提供的 test 命令行工具。使用 test 命令行工具可以启动 Dapr 运行时并模拟 pubsub 组件,以便在测试中使用。

以下是使用 test 命令行工具模拟 pubsub 组件的步骤:

1、安装 Dapr CLI 工具:
$ dapr init

2、启动 Dapr 运行时并模拟 pubsub 组件:
$ dapr run --app-id testapp --components-path ./components -- dotnet test
——其中:——————
--app-id 参数指定了应用程序的标识符。
--components-path 参数指定了 pubsub 组件的配置文件所在的路径。
dotnet test 命令指定了要运行的测试项目。

3、在测试代码中使用模拟的 pubsub 组件:
在测试代码中,您可以使用 Dapr 提供的客户端库来与 pubsub 组件交互。使用模拟的 pubsub 组件时,您可以使用 testapp 作为 pubsub 组件的名称。例如,使用 .NET SDK 的测试代码可能如下所示:
var client = new DaprClientBuilder()
.UsePubSubName("testapp")
.Build();

——————注意:——————
在这个例子中,UsePubSubName 方法指定了要使用的 pubsub 组件的名称。

使用 test 命令行工具可以方便地模拟 pubsub 组件,从而在集成测试中测试通过 pubsub 发布/订阅消息的代码是否正常。

何以清欢渡 | 园豆:10 (初学一级) | 2023-04-24 18:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册