Ich habe so etwas wie dies zu testen:Moqing UnitOfWork mit Lambda Expression
public void example(ModelView modelView)
{
//...
var statustId= 1;
var requests = _unitOfWork.RequestRepository.Get(m => m.RequestStatusId == statusId);
var requests = _unitOfWork.RequestRepository.Get(m => m.RequestTypeId == modelView.RequestTypeId);
var oldRequests = _unitOfWork.RequestRepository.Get(m => m.Created == DateTime.Now.AddDays(-7));
//...
}
Wie kann ich spotten alle „GET“ mit unterschiedlichen Daten?
Das ist, was ich bis jetzt bekommen habe: nicht sicher, wie der Ausdruck aussehen sollte, da er Variablen von der Funktion verwendet.
[Test]
public void Test()
{
//Arrange
_requestGenericRepo.Setup(m => m.Get(
It.Is<Expression<Func<Request, bool>>>(e => e.Equals(First GET - using local variable);
_requestGenericRepo.Setup(m => m.Get(
It.Is<Expression<Func<Request, bool>>>(e => e.Equals(Second GET - using variable from modelView));
_requestGenericRepo.Setup(m => m.Get(
It.Is<Expression<Func<Request, bool>>>(e => e.Equals(Third GET));
//Act
var response = _controller.Example(new ModelView
{
RequestTypeId= 1
});
//Assert
...
}
------------------- BEARBEITEN: ---------------------- ---------------------
Es wäre schön zu wissen, wie in der oben genannten Weise zu tun, aber ich kann alle Get(
zu Get().Where
wie folgt ändern:
public void example(ModelView modelView)
{
//...
var statustId= 1;
var requests = _unitOfWork.RequestRepository.Get().Where(m => m.RequestStatusId == statusId);
var requests = _unitOfWork.RequestRepository.Get().Where(m => m.RequestTypeId == modelView.RequestTypeId);
var oldRequests = _unitOfWork.RequestRepository.Get().Where(m => m.Created == DateTime.Now.AddDays(-7));
//...
}
[Test]
public void Test()
{
//Arrange
_requestGenericRepo.Setup(m => m.Get(
It.IsAny<Expression<Func<Request, bool>>>());
//Act
var response = _controller.Example(new ModelView
{
RequestTypeId= 1
});
//Assert
...
}
Sind jeder dieser Ausdrücke gehen bei dem Verfahren unter Test in der gleichen Anwendungsfall aufgerufen werden? – Nkosi
@Nkosi Ja ... Ich bearbeite meine Frage, aber ich wäre nett zu wissen, ob es einen Weg gibt, es zum Laufen zu bringen – Valter