0

微软动态 CRM 2015。

我测试了 Asp.Net Core 控制器的动作。当我创建新Lead记录时,某些插件会为lead.new_master_id字段生成新的 Guid(它的类型是string)。因此,在创建后我检索记录以获取它的生成new_master_id值。如何通过Fake Xrm Easy模拟此插件行为?

var fakedContext = new XrmFakedContext();
fakedContext.ProxyTypesAssembly = typeof(Lead).Assembly;
var entities = new Entity[]
{
  // is empty array
};

fakedContext.Initialize(entities);
var orgService = fakedContext.GetOrganizationService();

var lead = new Lead { FirstName = "James", LastName = "Bond" };
var leadId = orgService.Create(lead);

var masterId = orgService.Retrieve(Lead.EntityLogicalName, leadId, 
    new Microsoft.Xrm.Sdk.Query.ColumnSet(Lead.Fields.new_master_id))
    .ToEntity<Lead>().new_master_id;
4

1 回答 1

0

在 FakeXrmEasy 的 v1.x 中,您需要启用 PipelineSimulation 并通过注册其步骤手动注册您希望在 Create 上触发的插件步骤。

fakedContext.UsePipelineSimulation = true;

启用后,您需要通过调用 RegisterPluginStep 启用必要的步骤。在您的示例中,您至少需要注册以下内容:

fakedContext.RegisterPluginStep<LeadPlugin>("Create", ProcessingStepStage.Preoperation);

其中 LeadPlugin 将是生成 new_master_id 属性的插件的名称。

请记住 v1.x的局限性在于它仅支持基本 CRUD 请求的管道模拟

更高版本(2.x 和/或 3.x)带有一个全新的中间件实现,允许为任何消息注册插件步骤。很快我们将根据实际环境和/或自定义属性实现插件步骤的自动注册

这是使用新中间件的示例

public class FakeXrmEasyTestsBase
{
    protected readonly IXrmFakedContext _context;
    protected readonly IOrganizationServiceAsync2 _service;

    public FakeXrmEasyTestsBase() 
    {
    _context = MiddlewareBuilder
                    .New()

                    .AddCrud()
                    .AddFakeMessageExecutors()
                    .AddPipelineSimulation()

                    .UsePipelineSimulation()
                    .UseCrud()
                    .UseMessages()

                    .Build();

    _service = _context.GetAsyncOrganizationService2();
}

}

您可以在此处找到有关快速入门指南的更多信息

免责声明:我是 FakeXrmEasy 的作者 :)

于 2021-12-08T17:13:45.417 回答