onkami
onkami

Reputation: 9411

Moq a retrieve of particular list item

I currently have such a Moq expression

repo.Setup(r => r.GetProjectConfigurationById(It.Is<int>(s => s == response.Id))) 
    .Returns(response); // return response only if id matches setup one

As one can see, response is an object that has its own Id field. Now I have a List<responses> and would like to transfer this expression into something that behaves as such:

How I could do that with Moq?

Upvotes: 2

Views: 1337

Answers (1)

nemesv
nemesv

Reputation: 139768

You can use the It.IsAny<int>() to match any parameter in GetProjectConfigurationById

There are also overloads of the Returns function where you can specify your custom condition using the parameter passed in to your GetProjectConfigurationById to look up the element by id or return null:

var responses = new List<Response>();
//...
repo.Setup(r => r.GetProjectConfigurationById(It.IsAny<int>()))
    .Returns<int>(id => responses.SingleOrDefault(r => r.Id == id));

Upvotes: 3

Related Questions