The Scenario

I have a loop in production code that has evolved into processing batches of records. I need to modify an existing unit test to accommodate mocking the same method call each time through the loop returning different results on each loop (as it would in production).

The Solution

Using Moq we can make use of a Queue and Dequeue result sets each time in the loop as follows:

for (var i = 0; i < loop; i++)

{

var jobsInBatch = BuildJobs(batches).ToList();

jobQueue.Enqueue(jobsInBatch);

jobQueue.AddRange(jobsInBatch);

}

_processor.Setup(m => m.GetAllJobs(batches)).Returns(() => jobQueue.Dequeue());


Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: