2011-12-13 1 views
3

En suivant les instructions à: http://www.telerik.com/help/justmock/advanced-usage-static-mocking.htmlConfigurationManager.AppSettings avec moqueurs JustMock

Je suis pas réussi à se moquant ConfigurationManager.AppSettings. Voici le code que j'utilise ...

[TestMethod] 
public void my_test() 
{ 
    // Arrange 
    var appSettings = new NameValueCollection { 
     { "test1", "one" } 
    }; 

    Mock.Arrange(() => ConfigurationManager.AppSettings) 
     .Returns(appSettings) 
     .MustBeCalled(); 

    // Act 
    var test1 = ConfigurationManager.AppSettings["test1"]; 

    // Assert 
    Assert.AreEqual("one", test1); 
} 

C'est l'erreur que je reçois.

Échec de l'opération Assert.AreEqual. Attendu:. Réel: < (nul)>.

Est-il possible de se moquer de cet objet?

[edit] J'utilise aussi le Trial.

Répondre

2

Je viens d'essayer votre test et cela a fonctionné comme prévu:

// Arrange 
var appSettings = new NameValueCollection { { "test1", "one" } }; 

Mock.Arrange(() => ConfigurationManager.AppSettings) 
    .Returns(appSettings) 
    .MustBeCalled(); 

// Act 
var test1 = ConfigurationManager.AppSettings["test1"]; 

// Assert 
Assert.AreEqual("one", test1); 

ici s'il vous plaît assurez-vous que Configuration.AppSettings est pas déjà invoqué dans certains constructeur statique de votre projet.

ici de noter que .net profileur interceptées pendant OnJITCompilationStarted et ce feu une seule fois pour un membre donné.

De plus, assurez-vous que votre profileur est configuré correctement et que le plugin JM pour VS est installé. Vous pouvez vérifier si le profileur est activé par Mock.IsProfilerEnabled.

Enfin, vous n'avez généralement pas besoin d'utiliser Mock.SetupStatic (# TARGET_TYPE #), sauf si vous faites un faux simulacre ou si vous voulez simuler un constructeur statique pour un type donné. Lorsque vous allez faire Mock.Arrange, il va automatiquement définir les intercepteurs si ce n'est déjà fait.

[Note: J'ai utilisé la dernière version]

+0

Étrange, je n'arrive toujours pas à le faire fonctionner. Peut-être qu'il y a une limitation dans le procès? J'ai créé un nouveau projet de test JustMock directement à partir du modèle et je n'arrive toujours pas à le faire passer. J'ai même ajouté ceci (qui passe) Assert.IsTrue (Mock.IsProfilerEnabled); – joelnet