单元测试 Elastic Search Nest 客户端 - BulkAll
Unit testing Elastic Search Nest client - BulkAll
我正在为 ElasticSearch Nest .net 客户端编写单元测试。
我在存储库中有以下调用 class
var observable = _client.BulkAll(documents,
selector => selector
.BackOffTime("30s")
.BackOffRetries(2)
.RefreshOnCompleted()
.Size(1000)
).Wait(
TimeSpan.FromMinutes(15),
next => {
_logger.LogInformation($"Adding {next.Items.Count} number of items");
});
在我的单元测试中我有:
client = Substitute.For<IElasticClient>();
await _repository.AddDocuments(documents);
_client.Received().BulkAll(Arg.Any<IBulkAllRequest<Purchase>);
但是 运行 我的单元测试
时出现以下异常
Value cannot be null. (Parameter 'observable')
at Nest.Extensions.ThrowIfNull[T](T value, String name, String message)
我不确定如何正确构建我的单元测试。
非常感谢任何帮助
我认为您的问题是您正在使用此签名
处理 BulkAll
的过载
public BulkAllObservable<T> BulkAll<T>(IEnumerable<T> documents, Func<BulkAllDescriptor<T>, IBulkAllRequest<T>> selector, CancellationToken cancellationToken = default)
但是你准备了这个的替代品
public BulkAllObservable<T> BulkAll<T>(IBulkAllRequest<T> request, CancellationToken cancellationToken = default)
为了解决这个问题,我将按以下方式配置替代品
elasticClient
.Received()
.BulkAll(
Arg.Any<IEnumerable<Document>>(),
Arg.Any<Func<BulkAllDescriptor<Document>, IBulkAllRequest<Document>>>());
其中 Document
类型需要替换为您实际使用的类型。
我正在为 ElasticSearch Nest .net 客户端编写单元测试。
我在存储库中有以下调用 class
var observable = _client.BulkAll(documents,
selector => selector
.BackOffTime("30s")
.BackOffRetries(2)
.RefreshOnCompleted()
.Size(1000)
).Wait(
TimeSpan.FromMinutes(15),
next => {
_logger.LogInformation($"Adding {next.Items.Count} number of items");
});
在我的单元测试中我有:
client = Substitute.For<IElasticClient>();
await _repository.AddDocuments(documents);
_client.Received().BulkAll(Arg.Any<IBulkAllRequest<Purchase>);
但是 运行 我的单元测试
时出现以下异常Value cannot be null. (Parameter 'observable')
at Nest.Extensions.ThrowIfNull[T](T value, String name, String message)
我不确定如何正确构建我的单元测试。
非常感谢任何帮助
我认为您的问题是您正在使用此签名
处理BulkAll
的过载
public BulkAllObservable<T> BulkAll<T>(IEnumerable<T> documents, Func<BulkAllDescriptor<T>, IBulkAllRequest<T>> selector, CancellationToken cancellationToken = default)
但是你准备了这个的替代品
public BulkAllObservable<T> BulkAll<T>(IBulkAllRequest<T> request, CancellationToken cancellationToken = default)
为了解决这个问题,我将按以下方式配置替代品
elasticClient
.Received()
.BulkAll(
Arg.Any<IEnumerable<Document>>(),
Arg.Any<Func<BulkAllDescriptor<Document>, IBulkAllRequest<Document>>>());
其中 Document
类型需要替换为您实际使用的类型。