Nano Hash - криптовалюты, майнинг, программирование

Работают ли Pex и Moq вместе?

Кто-нибудь пробовал это?

Мне нравится moq и то, что делает pex, но я не пробовал их вместе. Думаю, в большинстве случаев я бы предпочел использовать moq, а не кротов, но мне любопытно узнать, сталкивался ли кто-нибудь с контрольно-пропускными пунктами?

Они хорошо играют?

18.12.2010


Ответы:


1

Хотя я не пробовал, Пекс и Мок должны поладить, как старые друзья.

Хотя методы перехвата между Pex и Moq различаются (Pex использует ProfilerAPI для интерпретации инструкций MSIL, Moq использует DynamicProxy для динамического получения классов), в исходном коде Moq есть ссылки, которые предполагают, что он был разработан для предотвращения проблем с повторным входом, когда Pex мог бы вмешиваться в Moq.

Согласно оригинальному исследованию Pex, вы можете украсить свой код с атрибутами, которые контролируют, когда используется переписчик Pex.

Из исходного кода Moq:

internal static MethodCall<T> Setup<T>(Mock mock, Expression<Action<T>> expression, Func<bool> condition) where T : class
{
    return PexProtector.Invoke(() =>
    {
       var methodCall = expression.ToMethodCall();
       var method = methodCall.Method;
       var args = methodCall.Arguments.ToArray();
       ThrowIfNotMember(expression, method);
       ThrowIfCantOverride(expression, method);

       var call = new MethodCall<T>(mock, condition, expression, method, args);
       var targetInterceptor = GetInterceptor(methodCall.Object, mock);
       targetInterceptor.AddCall(call, SetupKind.Other);

       return call;
     });   
 }

PexProtector определяется как:

 internal sealed class __ProtectAttribute : Attribute
 {
 }

 namespace Moq
 {
    [__Protect]
    [DebuggerStepThrough]
    internal static class PexProtector
    {
        public static void Invoke(Action action)
        {
           action();
        }

        public static T Invoke<T>(Func<T> function)
        {
           return function();
        }
    }
 }
12.02.2011
  • в результате они ведут себя очень хорошо вместе. 17.05.2011

  • 2

    я не заставил pex и moq работать очень хорошо вместе, хотя это было давно. Pex, похоже, заблудился в материалах Reflection.Emit/динамического прокси, которые создает moq.

    я бы посоветовал взглянуть на Moles, если вам нужно издеваться над pex. это довольно хорошая насмешливая структура, и она уже связана с pex

    02.05.2011
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..