Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

moq durable function IDurableOrchestrationContext when Setup CallActivityAsync always returning a null

I have a Durable Orchestrator function which returns a list from an activity function:

var returnList = await context.CallActivityAsync<List<MyObject>>("Activity", (input, context.InstanceId));

I have my xUnit Test setup as follows

var mock = new Mock<IDurableOrchestrationContext>();

var mockLogger = new Mock<Microsoft.Extensions.Logging.ILogger>();

var _returnList = new List<MyObject>();

mock.Setup(x=>x.CallActivityAsync<List<MyObject>("Activity",It.IsAny<Object>, string>>())).ReturnsAsync(_returnList);

var orch = new MyOrchestration();

await orc.Run(mock.Object,mockLogger.Object);

The Durable Functions Orchestrator Function always returns null where I want it to use the _returnList - Any help is appreciated.

Note: I am using DI so my orchestration and activity function are not static.

like image 839
Jody Avatar asked Apr 24 '26 15:04

Jody


1 Answers

Solved. Problem was the line

mock
    .Setup(x=>x.CallActivityAsync<List<MyObject>("Activity",It.IsAny<Object>, string>>()))
    .ReturnsAsync(_returnList);

should of been

mock
    .Setup(x => x.CallActivityAsync<List<MyObject>>("Activity",It.IsAny<(List<MyObject>, string)>()))
    .ReturnsAsync(_returnList);
like image 176
Jody Avatar answered Apr 26 '26 06:04

Jody