在我的 A.CallTo FakeItEasy 方法中无法获得正确的参数
Can't get right parameters right in my A.CallTo FakeItEasy method
我正在尝试创建一个简单的测试来检查是否调用了 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();
希望对您有所帮助。
我正在尝试创建一个简单的测试来检查是否调用了 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();
希望对您有所帮助。