環境:.NET 4.5。 FakeItEasy:4.0.0僞裝Confluent .NET Kafka消費者
我想創建卡夫卡消費者的假冒對象,下面是我使用的語法:
var fakeconsumer = A.Fake<Consumer<Null, string>>((x => x.WithArgumentsForConstructor(() => new Consumer<Null, string>(A.Dummy<IEnumerable<KeyValuePair<string, object>>>(), A.Dummy<IDeserializer<Null>>(), A.Dummy<StringDeserializer>()))));
卡夫卡客戶端的代碼是在這裏:https://github.com/confluentinc/confluent-kafka-dotnet/blob/master/src/Confluent.Kafka/Consumer.cs
由於你可以看到,我正在使用構造函數所需的正確參數調用Fake調用。但是我不斷收到以下錯誤消息:「沒有構造函數匹配構造函數傳遞的參數」。
任何幫助,非常感謝。
謝謝
編輯:
在FakeItEasy.Creation.CastleDynamicProxy.CastleDynamicProxyGenerator.CreateProxyGeneratorResult(類型typeOfProxy,ProxyGenerationOptions選項,IEnumerable的
1 additionalInterfacesToImplement, IEnumerable
1 argumentsForConstructor,IFakeCallProcessorProvider fakeCallProcessorProvider)在C:\項目\ fakeiteasy \ src \ FakeItEasy \ Creation \ CastleDynamicProxy \ CastleDynamicProxyGenerator.cs:第125行 位於FakeItEasy.Creation.CastleDynamicProxy.CastleDynamicProxyGenerator.GenerateProxy(類型typeOfProxy,ProxyGenerationOptions選項,IEnumerable1 additionalInterfacesToImplement, IEnumerable
1 argumentsForConstructor,IFakeCallProcessorProvider fakeCallProcessorProvider)在C:\項目\ fakeiteasy \ SRC \ FakeItEasy \創作\ CastleDynamicProxy \ CastleDynamicProxyGenerator.cs:線86 在FakeItEasy.Creation.FakeObjectCreator.GenerateProxy(類型typeOfFake,IProxyOptions proxyOptions,IEnumerable的1 argumentsForConstructor) in C:\projects\fakeiteasy\src\FakeItEasy\Creation\FakeObjectCreator.cs:line 113 at FakeItEasy.Creation.FakeObjectCreator.CreateFake(Type typeOfFake, IProxyOptions proxyOptions, DummyCreationSession session, IDummyValueResolver resolver, Boolean throwOnFailure) in C:\projects\fakeiteasy\src\FakeItEasy\Creation\FakeObjectCreator.cs:line 36 at FakeItEasy.Creation.DefaultFakeAndDummyManager.CreateFake(Type typeOfFake, Action
1 optionsBuilder)在C:\ projects \ fakeiteasy \ src \ FakeItEasy \ Creation \ DefaultFakeAndDummyManager.cs中:第41行 在FakeItEasy.A.Fake [T](Action`1 optionsBuilder) CS:行47
將來,我推薦閱讀整個錯誤信息。它可能避免需要提出一個問題。當提出問題時,包含整個錯誤是一個好主意,因爲它可以真正幫助答覆者。有關更多信息,請參閱https://stackoverflow.com/help/how-to-ask。 –
呵呵,另外,我沒有記錄這些信息,但FakeItEasy在創建Fake時會首先嚐試使用無參數構造函數,如果沒有,將按大多數參數的順序使用構造函數。它將提供傻瓜作爲構造參數。由於Consumer沒有無參數構造函數,因此您的原始代碼等同於'var fakeconsumer = A.Fake>()'。當然,即使你不需要指定參數,你也需要做(請參閱我的答案),但總是有理由明確指出首選的構造函數。 –