Domanda

Sto testando un'unità di una classe che chiama

ContextRegistry.GetContext().GetObject("ISomething")

ed è ok se un ISomething non è definito. Quindi sto provando a provarlo in entrambi i modi. Dato che questa definizione normalmente proviene dal file app.config e non voglio modificare quel file tra i test, sto usando [TestFixtureSetUp] e [TestFixtureTearDown] per registrare il singleton, test, e quindi vorrei ' registralo. Questo registra tutto bene:

...ObjectFactory.RegisterSingleton("ISomething", new SomethingMOCK());

e posso controllare per vedere se c'è:

if (...ObjectFactory.ContainsSingleton("ISomething"))

ma non riesco a RIMUOVERE il singleton che ho registrato. Ho provato a usare null:

...ObjectFactory.RegisterSingleton("ISomething", null);

ma questo genera. C'è un modo migliore?

È stato utile?

Soluzione

Per quanto ne so, non esiste una tale funzione. Sarebbe difficile, comunque. Quale dovrebbe essere la semantica se il singleton è già stato collegato ad altri oggetti, prima di essere rimosso alla fine? La reimpostazione delle proprietà degli oggetti su null potrebbe non essere possibile in quanto non è possibile supporre che null sia consentito per le proprietà interessate. Se l'oggetto è cablato tramite l'iniezione del costruttore, potrebbe non esserci nemmeno un metodo setter.

Altri suggerimenti

A parte il fatto che è sempre possibile creare un'istanza del proprio contesto di applicazione utilizzando il nuovo XmlApplicationContext (" assembly: // myconfigresource "), è possibile verificare anche il supporto di unit test di Spring.NET per questo. La documentazione di riferimento contiene un capitolo dedicato: http: //www.springframework. net / doc-latest / riferimento / html / testing.html

hth, Erich

Come già accennato: non è possibile utilizzare immediatamente , ma puoi farlo facilmente tramite il codice senza toccare Spring.net . Basta usare un modello proxy e consentire la rimozione / aggiornamento del target delegato, ad es. attraverso una semplice proprietà get / set. Tutto ciò che serve è un modo per ottenere l'oggetto creato del tuo contenitore IoC.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top