Ошибка при использовании FakeXrmEasy: невозможно привести объект типа 'Castle.Proxies.ObjectProxy_4' к типу 'Microsoft.Xrm.Sdk.IProxyTypesAssemblyProvider' - PullRequest
0 голосов
/ 18 февраля 2019

Я использую XrmFakeEasy Framework для модульного тестирования моих плагинов.

Ниже приведен метод модульного тестирования:

public void FirstTest()
    {
        var id = Guid.NewGuid();
        var entity1 = new new_entity1
        {
            new_name = "Test 1",
            new_entityId = id,
        };

        EntityReference entity = new EntityReference();
        entity.Id = id;
        entity.LogicalName = "new_entity1";
        entity.Name = entity1.new_name;
        var clasification = new new_clasification
        {
            Id = Guid.NewGuid(),
            new_name = "My First Classification",
            new_Type = false,
            new_Offender = entity
        };

        var fakedContext = new XrmFakedContext();
        fakedContext.ProxyTypesAssembly = Assembly.GetAssembly(typeof(idoc_inmateclasification));

        fakedContext.Initialize(new List<Entity>
        {
            classification, new_entity1
        });

        ParameterCollection inputParameters = new ParameterCollection();
        inputParameters.Add("Target", classification);

        var pluginContext = fakedContext.GetDefaultPluginContext();
        pluginContext.MessageName = "Create";
        pluginContext.InputParameters = inputParameters;
        pluginContext.Depth = 1;

        IOrganizationService service = fakedContext.GetOrganizationService();

        var fakedPlugin = fakedContext.ExecutePluginWithTarget<ClassificationPlugin>(classification);

Я написал следующий код для извлечения данных Offender из плагина:

    public new_entity entity1 => _entity1?? (_entity1= new Cache<new_entity>(() =>
{

    var queryExp = new QueryExpression("new_entity")
    {
        ColumnSet = new ColumnSet("new_sex", "new_age", "new_dateofbirth")
    };

    var result = OrganizationService.RetrieveMultiple(queryExp);
    if (result == null || result.Entities.Count == 0)
        return null;

    var record = result[0];
    var returnValue = new new_entity
    {   idoc_Sex = record.ValueSafe<OptionSetValue>("new_sex"),
        idoc_Age = record.ValueSafe<int>("new_age"),
    };
    return result;
}));

В учебном руководстве по XrmFakesEasy я прочитал, что все данные запрашиваются из данных, переданных в методе Initialize.

Но, когда я пытаюсь вызвать приведенный ниже метод,

evaluateScores.EvaluateScoresInForm(entity1)

Я получаю следующую ошибку:

Unable to cast object of type 'Castle.Proxies.ObjectProxy_4' to type 'Microsoft.Xrm.Sdk.IProxyTypesAssemblyProvider'.

Что я делаю не так?

Нужно ли создавать фиктивный метод для извлечения данных, когда мыделать в случае использования заглушек?

...