[英]DbSet<TableName> does not contain a definition for 'Where' and the best extension method overload
[英]does not contain defination for 'ReturnsAsync' and best extension method overload
無法調用此 function CallComplianceStarter...
收到錯誤 cs1929 Isetup<IworkFlowService, Task>'不包含'ReturnsAsync'和最佳擴展方法重載的定義
public async Task<object> Get_Compliance_QueryParameter_ReturnsOkStatusCode()
{
//Arrange
var mockServiceResult = new { TriggerFlow = "Test" };
_mockService.Setup(x => x.CallComplianceStarter(It.IsAny<string>(), It.IsAny<MessageHeader>()))
.ReturnsAsync(mockServiceResult);
var workFlowsController = new WorkFlowsController(_mockController.Object, _mockService.Object);
workFlowsController.ControllerContext = new ControllerContext();
workFlowsController.ControllerContext.HttpContext = new DefaultHttpContext();
//Act
var result = await workFlowsController.Get("P");
//Assert
Assert.Equal(((ObjectResult)result).StatusCode, (int)HttpStatusCode.OK);
return result;
}
public async Task<WorkFlowsResponse> CallComplianceStarter(string flowName, MessageHeader messageHeader)
{
// Imeplementation
return new WorkFlowsResponse { TriggerFlow = flowName };
}
您應該將CallComplianceStarter
簽名更改為同步的。
雖然 _mockService 確實有一個方法:
Task<WorkFlowsResponse> CallComplianceStarter(string flowName, MessageHeader messageHeader)
測試應該是
public WorkFlowsResponse CallComplianceStarter(string flowName, MessageHeader messageHeader)
{
// Imeplementation
return new WorkFlowsResponse { TriggerFlow = flowName };
}
如果您注意ReturnsAsync
簽名,您會看到它有一個只接受參數的重載: TResult value
。
public static IReturnsResult<TMock> ReturnsAsync<TMock, TResult>(this IReturns<TMock, Task<TResult>> mock, TResult value) where TMock : class;
不知道為什么首先在測試中需要這個CallComplianceStarter
? 你只是從生產中復制它嗎? 我相信您只需要一個特定的返回值,例如new WorkFlowsResponse { TriggerFlow = "MyFlowName" };
.
並將其用於:
var expected = new WorkFlowsResponse { TriggerFlow = "MyFlowName" };
_mockService.Setup(x => x.CallComplianceStarter(It.IsAny<string>(), It.IsAny<MessageHeader>()))
.ReturnsAsync(expected);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.