gpt4 book ai didi

c# - 无法在我的 A.CallTo FakeItEasy 方法中获得正确的参数

转载 作者:太空宇宙 更新时间:2023-11-03 22:31:15 32 4
gpt4 key购买 nike

我正在尝试创建一个简单的测试来检查是否调用了 elasticsearch 客户端的搜索方法。

public async Task<IReadOnlyCollection<MyClass>> MySearch(string term)
{
var searchResponse = _elasticClient.Search<MyClass>(s => s
.AllIndices()
.Query(body => body
.MultiMatch(m => m
.Query(term))));

return searchResponse.Documents;
}

这是测试:

[Fact]                                                                                           
public async Task MyTest()
{
await _searchAgent.MySearch(_term);

A.CallTo(() => _elasticClient.Search<MyClass(A<ISearchRequest>._))
.MustHaveHappened();
}

我不太明白这里的错误信息。看起来 A.CallTo 方法中的参数有问题,但我想我忽略了 A<ISearchRequest>._ 的输入?

FakeItEasy.ExpectationException : 

Assertion failed for the following call:

Nest.IElasticClient.Search`1[RiksTV.Api.ContentSearch.Model.ContentSearchTitle](request: <Ignored>)
Expected to find it once or more but didn't find it among the calls:
1: Nest.IElasticClient.Search`1[RiksTV.Api.ContentSearch.Model.ContentSearchTitle](selector: System.Func`2[Nest.SearchDescriptor`1[RiksTV.Api.ContentSearch.Model.ContentSearchTitle],Nest.ISearchRequest])

最佳答案

您实际上是在 ElasticClient 上使用此方法

ISearchResponse<TDocument> Search<TDocument>(
Func<SearchDescriptor<TDocument>, ISearchRequest> selector = null)
where TDocument : class

不是

ISearchResponse<TDocument> Search<TDocument>(ISearchRequest request) where TDocument : class;

所以你需要稍微改变你的A.CallTo(..)

A.CallTo(() => elasticClient.Search(A<Func<SearchDescriptor<MyClass>, ISearchRequest>>._))
.MustHaveHappened();

希望对您有所帮助。

关于c# - 无法在我的 A.CallTo FakeItEasy 方法中获得正确的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57627955/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com