Test unitaire d'effort Entity framework 6.1.3 DB-first

c# effort entity-framework unit-testing

Question

Je rencontre des problèmes lorsque j'utilise Effort Framework (version 1.1.4) pour tester un peu ma couche de base de données.

J'ai une couche de base de données utilisant Entity Framework 6.1.3 et le modèle est créé à l'aide de la méthode première base de données. Il existe donc un fichier *.edmx décrivant le modèle.

J'ai créé une classe partielle pour exposer un constructeur supplémentaire utilisé par les tests unitaires avec un effort comme celui-ci:

public partial class Entities
{
    public Entities(DbConnection connection)
        : base(connection, true)
    {
    }
}

Le test unitaire simple ressemble à ceci:

public partial class Entities
{
    public Entities(DbConnection connection)
        : base(connection, true)
    {
    }
}

Lorsque je lance le test unitaire, il lève une exception pour la ligne:

public partial class Entities
{
    public Entities(DbConnection connection)
        : base(connection, true)
    {
    }
}

{"Le fournisseur n'a pas renvoyé d'instance ProviderManifest."} Message InnerException: {"Impossible de déterminer la version de stockage; une connexion de stockage valide ou un indice de version est requis."}}

D'autres articles que j'ai trouvés suggèrent de modifier l'attribut ProviderManifestToken dans le fichier *.edmx de "2012" à "2008". Cela semble résoudre le problème mais donne plutôt une autre exception lorsque j'essaie d'utiliser le contexte pour la première fois ici:

public partial class Entities
{
    public Entities(DbConnection connection)
        : base(connection, true)
    {
    }
}

NotSupportedException Impossible de déterminer le nom du fournisseur pour la fabrique de fournisseurs de type 'System.Data.EntityClient.EntityProviderFactory'. Assurez-vous que le fournisseur ADO.NET est installé ou enregistré dans la configuration de l'application.

Quelqu'un sait comment résoudre ce problème afin que je puisse utiliser Effort avec l'entité framework 6.1.3 DB-first approche?

J'ai réussi à utiliser Effort (version 1.1.4) pour tester les couches DB créées dans EF 4 et EF 5 avec l'approche DB-first - c'est pourquoi je pense que la version EF peut être intéressante ...

Réponse acceptée

Un de mes collègues a trouvé la solution à mon problème!

Apparemment, j'utilisais le paquet de nuget "Effort" au lieu du paquet de nuget "Effort.EF6". Après avoir désinstallé et installé l’autre ordinateur, j’ai également dû mettre à jour App.Config avec les tags suivants:

  <system.data>
    <DbProviderFactories>
      <add name="Effort.Provider" invariant="Effort.Provider" description="Effort.Provider" type="Effort.Provider.EffortProviderFactory,Effort" />  
    </DbProviderFactories>
  </system.data>

  <entityFramework>
    <providers>
      <provider invariantName="Effort.Provider" type="Effort.Provider.EffortProviderServices, Effort" />
    </providers>
  </entityFramework>

Et j'ai également inclus un appel dans la configuration pour mes tests unitaires afin d'enregistrer le fournisseur d'effort:

  <system.data>
    <DbProviderFactories>
      <add name="Effort.Provider" invariant="Effort.Provider" description="Effort.Provider" type="Effort.Provider.EffortProviderFactory,Effort" />  
    </DbProviderFactories>
  </system.data>

  <entityFramework>
    <providers>
      <provider invariantName="Effort.Provider" type="Effort.Provider.EffortProviderServices, Effort" />
    </providers>
  </entityFramework>

Cela a résolu le problème pour moi. Espérons que cela puisse aider les autres!




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi