嘲弄IOrganizationService的问题.执行在CRM 2011插件
本文关键字:CRM 2011 插件 执行 IOrganizationService 问题 嘲弄 | 更新日期: 2023-09-27 18:04:15
我仍然是新的嘲弄,我有这个代码的麻烦:
//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的正确方法吗?执行方法?
您的方法是正确的,但是您使用了错误的响应类型。服务将结果作为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"
});