Domanda

Quindi ho un sacco di classi interne che sto cercando di deridere con RhinoMocks. Ho aggiunto la seguente riga a assemblyinfo.cs:

[assembly:InternalsVisibleTo(RhinoMocks.StrongName)]

Tuttavia, questo ancora non mi permette di deridere le classi interne; Ricevo il seguente messaggio di errore da NUnit:

  

MyTests.SomeTest:   System.TypeLoadException: metodo   "SomeMethod" sul tipo   'SomeType504cf40be6b444abfd417dccf5d6752'   dal montaggio   'DynamicProxyGenAssembly2,   Versione = 0.0.0.0, Cultura = neutro,   PublicKeyToken = null 'ha la precedenza su a   metodo che non è visibile da quello   assemblaggio.

Nota che sto usando la versione "unita" di RhinoMocks (piuttosto che l'opzione di download "con gli assiemi Castle"). Non so come Castle sia stato unito a RhinoMocks ma non dovrei rendere i miei interni visibili a RhinoMocks, allo stesso modo renderlo visibile a Castle (che fa parte di Rhino.Mocks.dll)?

È stato utile?

Soluzione

E così finalmente ho avuto un po 'di tempo e ho capito che tutto quello che dovevo fare era aggiungere quanto segue a AssemblyInfo.cs:

[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]

Altri suggerimenti

Il tuo problema è che RhinoMocks genera dinamicamente un assembly con proxy dinamici. Quindi rendere visibili i tuoi interni a RhinoMocks non aiuta. Le uniche possibili soluzioni al tuo problema che vedo sono:

  1. Rendi pubbliche le classi che desideri prendere in giro.
  2. Scrivi manualmente una classe finta nell'assieme dei progetti di test e modifica l'attributo InternalVisibleTo per concedere l'accesso all'assieme di test.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top