Fake Xrm Easy: как имитировать поведение плагина на orgService.Create()?
Microsoft Dynamics CRM 2015.
Тестирую действие контроллера Asp.Net Core. Когда я создаю новый
Lead
Запишите какой-то плагин, генерирующий новый Guid для
lead.new_master_id
поле (его тип
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;
1 ответ
В версии 1.x FakeXrmEasy вам нужно включить PipelineSimulation и зарегистрировать шаги плагина, которые вы хотите запускать при создании вручную, зарегистрировав их шаги.
fakedContext.UsePipelineSimulation = true;
После включения вам нужно будет включить необходимые шаги, вызвав RegisterPluginStep. В вашем примере вам нужно как минимум зарегистрировать что-то вроде:
fakedContext.RegisterPluginStep<LeadPlugin>("Create", ProcessingStepStage.Preoperation);
Где LeadPlugin будет именем вашего плагина, который генерирует свойство new_master_id.
Имейте в виду, что версия 1.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 :)