C# I';我正试图用refit和cqrs与.net和xunit一起测试我的httprequest
我很难测试我的应用程序,因为我不知道如何使用refit as http post和get进行测试,如下代码所示:C# I';我正试图用refit和cqrs与.net和xunit一起测试我的httprequest,c#,asp.net,unit-testing,asp.net-core,xunit,C#,Asp.net,Unit Testing,Asp.net Core,Xunit,我很难测试我的应用程序,因为我不知道如何使用refit as http post和get进行测试,如下代码所示: public class GetMerchantListQueryHandler : IRequestHandler<GetMerchantListQuery, MerchantList> { private readonly IOptions<SalesforceSettings> _salesforceSettings;
public class GetMerchantListQueryHandler : IRequestHandler<GetMerchantListQuery, MerchantList>
{
private readonly IOptions<SalesforceSettings> _salesforceSettings;
public GetMerchantListQueryHandler(IOptions<SalesforceSettings> salesforceSettings)
{
_salesforceSettings = salesforceSettings;
}
public async Task<MerchantList> Handle(GetMerchantListQuery request, CancellationToken cancellationToken)
{
var salesforceResponseAuth = new SalesforceRequest
{
grant_type = _salesforceSettings.Value.GrantType,
client_id = _salesforceSettings.Value.ClientId,
client_secret = _salesforceSettings.Value.ClientSecret,
username = _salesforceSettings.Value.Username,
password = _salesforceSettings.Value.Password
};
//POST - authenticate
var salesforceAPI = RestService.For<ISalesforceService>(_salesforceSettings.Value.SafrapayEndpoint);
var authToken = await salesforceAPI.MerchantContact(salesforceResponseAuth);
//GET - fetch merchant data
var merchantAPI = RestService.For<IMerchantService>(_salesforceSettings.Value.SafrapayEndpoint);
var merchants = merchantAPI.SearchMerchantList($"Bearer {authToken.access_token}");
return await merchants;
}
}
公共类GetMerchantListQueryHandler:IRequestHandler
{
私有只读IOPS\u salesforceSettings;
公共GetMerchantListQueryHandler(IOOptions salesforceSettings)
{
_salesforceSettings=salesforceSettings;
}
公共异步任务句柄(GetMerchantListQuery请求、CancellationToken CancellationToken)
{
var salesforceResponseAuth=新的SalesforceRequest
{
grant\u type=\u salesforceSettings.Value.GrantType,
客户端\u id=\u salesforceSettings.Value.ClientId,
client\u secret=\u salesforceSettings.Value.ClientSecret,
username=\u salesforceSettings.Value.username,
密码=\u salesforceSettings.Value.password
};
//后验证
var salesforceAPI=RestService.For(_salesforceSettings.Value.SafrapayEndpoint);
var authToken=等待salesforceAPI.MerchantContact(salesforceResponseAuth);
//获取商户数据
var merchantAPI=RestService.For(_salesforceSettings.Value.SafrapayEndpoint);
var-merchants=merchantAPI.SearchMerchantList($“Bearer{authToken.access_token}”);
回报等待商家;
}
}
这就是我想测试的课程,我已经试过了:
private readonly GetMerchantListQueryHandler _getMerchantListQuery;
private readonly Mock<IOptions<SalesforceSettings>> _salesforceSettings;
public GetMerchantListQueryTests()
{
_salesforceSettings = new Mock<IOptions<SalesforceSettings>>();
_getMerchantListQuery = new GetMerchantListQueryHandler(_salesforceSettings.Object);
}
[Fact]
public async Task ShouldSendHandleSuccessfullyAsync()
{
//ARRANGE
var cancellation = new CancellationToken();
var request = It.IsAny<GetMerchantListQuery>();
var response = new MerchantList();
//ACT
var result = await _getMerchantListQuery.Handle(request, cancellation);
//ASSERT
Assert.NotNull(result);
}
private只读GetMerchantListQueryHandler\u getMerchantListQuery;
私有只读模拟设置;
公共GetMerchantListQueryTests()
{
_salesforceSettings=新建模拟();
_getMerchantListQuery=新的GetMerchantListQueryHandler(\u salesforceSettings.Object);
}
[事实]
公共异步任务应SendHandleSuccessfullYaSync()
{
//安排
var cancellation=新的CancellationToken();
var request=It.IsAny();
var响应=新商品列表();
//表演
var result=await\u getMerchantListQuery.Handle(请求、取消);
//断言
Assert.NotNull(结果);
}