Может ли кто-нибудь предоставить мне образец кода для модульного тестирования рабочего процесса с Rhino Framework. Более конкретно я не могу заглушить объект CodeActivityContext
, который является параметром для метода workflow.execute
. Я очень новичок в Rhino, и это тоже не помогает.Тестирование рабочего процесса Dynamics CRM с Rhino Framework
0
A
ответ
0
Я рекомендую другой подход к модульному тестированию, который отличается от большинства блогов и сообщений.
Я рекомендую получить IOrganizationService и любые данные или идентификаторы, необходимые для выполнения вашей функции. Затем я рекомендую поместить функцию, которая выполняет тяжелую работу (логика, операции CRUD и т. Д.) В отдельном классе. Таким образом, вам нужно только создать макет службы IOrganizationService. Вот пример:
public class AccountContactManager
{
private IOrganizationService _service;
public AccountContactManager(IOrganizationService service)
{
_service = service;
}
public void UpdateAccountContacts(Guid accountId)
{
this._service.Execute();//do something here with the service
}
}
А вот пример того, как получить то, что вам нужно из CodeActivityContext:
var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
var tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
var recordId = context.PrimaryEntityId;
var preImage = context.PreEntityImages["PreImage"];
var postImage = context.PostEntityImages["PostImage"];
var factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
var organizationService = result.Factory.CreateOrganizationService(context.UserId);
var tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
var userId = context.UserId;
var record = context.InputParameters["Target"];
if (record is Entity)
{
var entityRecord = (Entity)record;
}
else
{
var recordReference = (EntityReference)record;
}