2009-07-30 8 views
0

Quelqu'un peut-il me dire WHEY le code suivant souffle lorsque le moq.SetupProperty échoue dans le code ci-dessous:Moq SetupProperty ne fonctionne pas

[TestMethod] 
public void SimulatorService_Returns_HighScores() 
{ 
    IScoreService scoreService = new ScoreService(MockScoreRepository.GetMockScoreRepository()); 
    Assert.IsNotNull(scoreService); 
    var highScores = scoreService.GetHighScores(); 
    Assert.IsTrue(highScores.Count > 0); 
} 


public static class MockScoreRepository 
{ 

    public static ScoreEntry GetMockScoreEntry(int seed) 
    { 
     var moq = new Mock<ScoreEntry>(); 

     moq.SetupProperty(s => s.UserID, seed); 
     moq.SetupProperty(s => s.Score, 10 * seed); 
     moq.SetupProperty(s => s.EntryDate, DateTime.Now); 

     return moq.Object; 
    } 

    public static IScoreRepository GetMockScoreRepository() 
    { 
     var scores = new List<ScoreEntry>(); 
     for (var i = 0; i < 20; i++) 
     { 
      scores.Add(GetMockScoreEntry(i)); 
     } 

     var repository = new Mock<IScoreRepository>(); 
     repository.Setup(r => r.GetScores()).Returns(scores.AsQueryable()); 

     return repository.Object; 
    } 
} 
+0

Pourriez-vous publier l'exception que vous obtenez? –

+0

J'ai essayé de reproduire mais je ne pouvais pas. Pouvez-vous poster l'erreur et la ligne qui souffle? Également des déclarations de classes et d'interfaces pertinentes. – vidstige

+0

La ligne 'Assert.IsNotNull (scoreService);' est inutile - les constructeurs retournent une référence à une instance ou lancent une exception, il n'est pas possible pour un constructeur de renvoyer une référence nulle. Voir la spécification C#. §7.6.10.1 Expressions de création d'objet. – nicodemus13

Répondre

0

La première chose que je voudrais vérifier est de faire en sorte que les propriétés de ScoreEntry que vous définissez ont des setters accessibles. En d'autres termes, assurez-vous que vos setters ont un accès public ou que vous avez au moins un setter pour chaque propriété que vous essayez de définir via moq.