Le test d'un service à l'aide de maquette d'objets de référentiel

Je suis en train de tester un service à l'intérieur d'un cadre.

Afin d'initialiser le service, je suis en utilisant la maquette des objets du référentiel.

ServiceTest.cs

private IRepository _repository;
private IService _service;
private List<Object> _objects;

[TestInitialize]
public void Initialize()
{
  _repository = new Mock<IRepository>().Object;

  _service = new Service(repository);

  _objects = new List<Object>()
  {
      new Object { Name = "random", ID = 1 },
      new Object { Name = "not so random", ID = 1},
      new Object { Name = "random", ID = 2 },
      new Object { Name = "not so random", ID = 2}
  };

  //attempt at mocking the repository
  _repository.Setup(r => r.GetObjects(It.IsAny<string>(), It.IsAny<int>())).Returns(_objects.Where(o => o.Name == _objects.Name && o.ID == _objects.ID).ToList());
}

[TestMethod]
public void GetObjects_ReturnObjectsList()
{
    //Arrange
    var name = "random";

    //Act
    var objects = _service.RetrieveObjects(name, 2);

    //Assert
    Assert.AreEqual(name, objects.Single().Name);
 }

Cependant, quand j'ai tester le service, je reçois ArgumentNullExceptions. Les variables définies dans le référentiel des appels à la méthode de retour null, et, finalement, déclenche une erreur lors de la logique métier est exécuté.

Service.cs

    public List<Objects> RetrieveObjects(string name, int id) 
    {   
      var getObjects = repository.GetObjects(name, id); //getObjects return null

      DoLogic(getObjects); //ArgumentNullException is thrown here

      return getObjects; 
    }

J'ai cherché des informations sur les moqueries des dépôts, mais il semble que je vais avoir beaucoup de choses à l'installation, juste pour tester. Je me demande si le programme d'installation est en vaut la peine.

Pourquoi suis-je ArgumentNullExceptions? Est-il un moyen de tester des méthodes qui appellent des référentiels?

  • Qu'essayez-vous de test? De Service ou de Référentiel? Vous êtes moqueur Référentiel, et de l'affirmation de quoi il en retourne?!
  • Oups, je voulais dire de service.
InformationsquelleAutor | 2013-05-28