Environnement: .NET 4.5. FakeItEasy: 4.0.0Faking Confluent .NET Consommateurs Kafka
Je suis en train de créer un objet faux de consommateurs Kafka, ci-dessous est la syntaxe que j'utilise:
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>()))));
Le code pour le client Kafka est ici: https://github.com/confluentinc/confluent-kafka-dotnet/blob/master/src/Confluent.Kafka/Consumer.cs
Comme vous pouvez voir, j'appelle l'appel Faux avec les paramètres corrects requis pour le constructeur. Cependant, je reçois toujours le message d'erreur suivant: "Aucun constructeur ne correspond aux arguments passés pour le constructeur.".
Toute aide est grandement appréciée.
Merci
Edit:
à FakeItEasy.Creation.CastleDynamicProxy.CastleDynamicProxyGenerator.CreateProxyGeneratorResult (Type typeOfProxy, options ProxyGenerationOptions, IEnumerable
1 additionalInterfacesToImplement, IEnumerable
1 argumentsForConstructor, IFakeCallProcessorProvider fakeCallProcessorProvider) dans C: \ projects \ fakeiteasy \ src \ FakeItEasy \ Creation \ CastleDynamicProxy \ CastleDynamicProxyGenerator.cs: ligne 125 à FakeItEasy.Creation.CastleDynamicProxy.CastleDynamicProxyGenerator.GenerateProxy (Type typeOfProxy, options ProxyGenerationOptions, IEnumerable1 additionalInterfacesToImplement, IEnumerable
1 argumentsForConstructor, IFakeCallProcessorProvider fakeCallProcessorProvider) dans C: \ projets \ fakeiteasy \ src \ FakeItEasy \ Création \ CastleDynamicProxy \ CastleDynamicProxyGenerator.cs: ligne 86 à FakeItEasy.Creation.FakeObjectCreator.GenerateProxy (Type typeOfFake, IProxyOptions proxyOptions, IEnumerable1 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) dans C: \ projects \ fakeiteasy \ src \ FakeItEasy \ Création \ DefaultFakeAndDummyManager.cs: ligne 41 à FakeItEasy.A.Fake [T] (Action`1 optionsBuilder) dans C: \ projects \ fakeiteasy \ src \ FakeItEasy \ A. cs: ligne 47
À l'avenir, je recommande de lire tout le message d'erreur. Cela peut éviter de devoir poser une question. Et lorsque vous posez une question, c'est une bonne idée d'inclure toute l'erreur, car cela peut vraiment aider les répondeurs. Voir https://stackoverflow.com/help/how-to-ask pour plus d'informations. –
Oh, et un aparté, ce n'est pas documenté que je peux dire, mais FakeItEasy essaiera d'abord d'utiliser le constructeur sans paramètre en faisant un Fake, et s'il n'y en a aucun, utilisera les constructeurs dans l'ordre de la plupart des paramètres. Et cela fournira des Dummies en tant qu'arguments constructeurs. Puisque Consumer n'a pas de constructeur sans paramètre, votre code original est équivalent à 'var fakeconsumer = A.Fake>()'. Bien sûr, il peut toujours y avoir des raisons d'être explicite sur le constructeur préféré, même si vous n'avez pas besoin de spécifier des arguments, ce que vous devrez faire (voir ma réponse). –