我正在为一个持久的函数编写单元测试.在此期间,我面临着一个关于持久任务客户端嘲笑的问题.我得到了一个错误在scheduleNewsStrationInstanceAsync模拟设置.
以下是单元测试代码:
public async Task HttpStart_ValidRequest_ReturnsSuccessResponse()
{
// Arrange
// Define constants
const string functionName = "SampleFunction";
const string instanceId = "7E467BDB-213F-407A-B86A-1954053D3C24";
var loggerMock = new Mock<ILogger<Template>>();
var optionsMock = new Mock<IOptions<AppConfig>>();
var commonServiceMock = new Mock<ICommonService>();
var ServiceMock = new Mock<IService>();
var requestMock = new Mock<HttpRequestData>();
var requestBody = @"{""Id"":""123""}";
requestMock.Setup(req => req.Body).Returns(new MemoryStream(Encoding.UTF8.GetBytes(requestBody)));
var durableClientMock = new Mock<DurableTaskClient>();
durableClientMock.Setup(x => x.ScheduleNewOrchestrationInstanceAsync(functionName It.IsAny<object>())).
ReturnsAsync(instanceId);
durableClientMock.Setup(client => client.ScheduleNewOrchestrationInstanceAsync(It.IsAny<string>(), requestMock.Object))
.ReturnsAsync("instanceId123");
var functionContextMock = new Mock<FunctionContext>();
functionContextMock.Setup(ctx => ctx.GetLogger(It.IsAny<string>())).Returns(loggerMock.Object);
var buildTemplate = new BuildTemplate(optionsMock.Object, commonServiceMock.Object, ServiceMock.Object);
// Act
var response = await buildTemplate.HttpStart(requestMock.Object, durableClientMock.Object, functionContextMock.Object);
// Assert
Assert.IsNotNull(response);
Assert.AreEqual(202, response.StatusCode);
}
我试图设置durableClientMock在2种不同的方式,但两者都不工作,
durableClientMock.Setup(x => x.ScheduleNewOrchestrationInstanceAsync(functionName It.IsAny<object>())).
ReturnsAsync(instanceId);
durableClientMock.Setup(client => client.ScheduleNewOrchestrationInstanceAsync(It.IsAny<string>(), requestMock.Object))
.ReturnsAsync("instanceId123");