[英]Unit Testing and Mocking SubscriberClient (Google Pub/Sub) in a C# Project
我在 .NET Core 3.1 项目中使用 Google Cloud Pub/Sub (Google.Cloud.PubSub.V1 (2.2.0))。 我正在尝试为从 Google Pub/Sub 订阅中检索消息的代码编写单元测试。 我的代码类似于您在 Google 文档中找到的代码。
var subscriber = await SubscriberClient.CreateAsync(subscriptionName);
try
{
var startTask = subscriber.StartAsync(async (PubsubMessage message, CancellationToken cancel) =>
{
//code
});
await Task.Delay(5000);
await subscriber.StopAsync(CancellationToken.None);
await startTask;
}
catch (Exception ex)
{
//code
}
有没有办法在单元测试中模拟 SubscriberClient? SubscriberClient 似乎没有接口。 我的单元测试使用 NUnit (3.12.0) 和 Moq (4.14.5)。
任何想法,将不胜感激。
调用SubscriberClient.Create(...)
而不是.CreateAsync(...)
允许您传入底层的SubscriberServiceApiClient
实例。
编辑:抱歉,以上不正确,应该是:
直接实例化SubscriberClientImpl
而不是调用SubscriberClient.CreateAsync(...)
。 这允许您传入底层的SubscriberServiceApiClient
实例。 请注意,您可以将new SubscriberClient.Settings()
传递给settings
参数,并将null
作为默认值传递给shutdown
参数。
可以直接模拟SubscriberServiceApiClient
,也可以通过实例化SubscriberServiceApiClientImpl
实例并传入模拟的Subscriber.SubscriberClient
来模拟。
测试时,请注意, SubscriberClient
是多线程的,默认设置将调用从多个线程同时传递给StartAsync
的回调。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.