gpt4 book ai didi

moq - Pex 和 Moq 一起工作吗?

转载 作者:行者123 更新时间:2023-12-04 13:23:07 28 4
gpt4 key购买 nike

有没有人试过这个?

我喜欢最小起订量,我喜欢 pex 正在做的事情,但还没有一起尝试过。我认为在大多数情况下,我更喜欢使用 moq 而不是痣,但很想知道是否有人遇到了障碍?

他们玩得好吗?

最佳答案

虽然我没试过,但Pex和Moq应该像老 friend 一样相处。

虽然 Pex 和 Moq 之间的拦截技术不同(Pex 使用 ProfilerAPI 来解释 MSIL 指令;Moq 使用 DynamicProxy 来动态派生类)但 Moq 源代码中的引用表明它旨在防止 Pex 会出现的重入问题干扰最小起订量。

根据原始 research paper for Pex ,您可以使用控制何时使用 Pex 重写器的属性来装饰您的代码。

Moq source code :

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();
}
}
}

关于moq - Pex 和 Moq 一起工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4478457/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com