gpt4 book ai didi

c# - 在 CRM 2011 插件中模拟 IOrganizationService.Execute 的问题

转载 作者:行者123 更新时间:2023-11-30 14:39:05 29 4
gpt4 key购买 nike

我对模拟还是个新手,我在使用这段代码时遇到了问题:

//create the request
SendEmailFromTemplateRequest emailUsingTemplateReq =
new SendEmailFromTemplateRequest
{
Target = email,
TemplateId = new Guid("07B94C1D-C85F-492F-B120-F0A743C540E6"),
RegardingId = toParty[0].PartyId.Id,
RegardingType = toParty[0].PartyId.LogicalName
};

//retrieve response
SendEmailFromTemplateResponse emailUsingTemplateResponse =
(SendEmailFromTemplateResponse)service.Execute(emailUsingTemplateReq);

var emailId = emailUsingTemplateResponse.Id;

到目前为止,我在模拟 IOrganizationService 时没有遇到任何问题,但我在 execute 方法上做错了。根据 sdk,Execute 方法返回一个 OrganizationResponse 对象,需要将其转换为正确的响应类。到目前为止,这是我尝试过的:

var idResults = new ParameterCollection();
idResults.Add("Id", Guid.NewGuid());

mockOrganizationService
.Setup(os => os.Execute(It.IsAny<SendEmailFromTemplateRequest>()))
.Returns(new OrganizationResponse
{
Results = idResults,
ResponseName = "SendEmailFromTemplate",
});

当我尝试运行测试时,我不断收到无效转换异常。我想我一定是错误地设置了响应对象。有人可以向我解释模拟 IOrganizationService.Execute 方法的正确方法吗?

最佳答案

您的方法是正确的,但是您使用了错误的响应类型。该服务将结果作为 OrganizationResponse(它是所有响应的基类)返回。您尝试将基本类型转换为特定类型。这行不通。

您只需返回一个 SendEmailFromTemplateResponse 实例即可让您的代码正常工作。

var orgService = new Mock<IOrganizationService>();

var idResults = new ParameterCollection
{
{"Id", Guid.NewGuid()}
};

orgService.Setup(s => s.Execute(It.IsAny<SendEmailFromTemplateRequest>()))
.Returns(new SendEmailFromTemplateResponse
{
Results = idResults,
ResponseName = "SendEmailFromTemplate"
});

关于c# - 在 CRM 2011 插件中模拟 IOrganizationService.Execute 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6903128/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com