Testen eines service mit mock-repository-Objekte

Ich bin testen eines service innerhalb eines Rahmens.

Zur Initialisierung der service, bin ich mit mock-repository-Objekte.

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);
 }

Allerdings, wenn ich den Dienst testen, ich bekomme ArgumentNullExceptions. Die Variablen, die für die repository-Methode ruft zurück null, und schließlich wirft einen Fehler, wenn die business-Logik ausgeführt wird.

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; 
    }

Habe ich nachgeschaut Informationen auf mocking-repositories, aber scheint, wie ich haben eine Menge zu setup, nur um zu testen. Ich Frage mich, ob das setup ist es Wert.

Warum bin ich immer ArgumentNullExceptions? Gibt es eine Möglichkeit, test-Methoden, call-repositories?

  • Was wollen Sie testen? Service-oder Repository? Sie sind Spott-Repository, und zu bekräftigen, was es gibt?!
  • Oops, ich meinte service.
InformationsquelleAutor | 2013-05-28
Schreibe einen Kommentar