Я написал долговременную функцию Azure на F # и пытаюсь написать модульные тесты, следуя указаниям на https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-unit-testing. Я пытался использовать Foq для создания фиктивного экземпляра абстрактного класса DurableOrchestrationContextBase
, нокоторая завершается с ошибкой:
System.TypeLoadException: метод 'set_InstanceId' для типа 'Mock.DurableOrchestrationContextBase1953fcc2-be15-41fc-850c-5a5813aace89' из сборки 'Foq.Dynamic, Version = 0.0.0.0, Culture = нейтральный, PublicKeyToken = null 'переопределяет метод, который не виден из этой сборки.
Ошибка относится к этому свойству:
public virtual string InstanceId { get; internal set; }
Дальнейшее исследование показываетчто Foq может смоделировать не виртуальные, неабстрактные свойства с помощью внутренних сеттеров в абстрактных классах C #, но не может справиться с такими свойствами, если они виртуальные.
Есть ли способ издеваться над таким классомв тесте F #?В этом случае было бы неудобно развертывать мою собственную реализацию, поскольку DurableOrchestrationContextBase
- это большой класс, в котором много членов, которые должны быть реализованы.