gpt4 book ai didi

c# - 模拟 HttpWebRequest 接受最小起订量

转载 作者:太空狗 更新时间:2023-10-30 01:35:23 25 4
gpt4 key购买 nike

我正在使用 Moq 模拟 HttpWebRequest。我可以模拟 Headers & Method,但是当我尝试模拟 Accept 时它会爆炸。

代码是:

 Mock<HttpWebResponse> response = new Mock<HttpWebResponse>(MockBehavior.Loose);
Mock<HttpWebRequest> request = new Mock<HttpWebRequest>();
request.Setup(s => s.GetResponse()).Returns(response.Object);
request.Setup(m => m.Method).Returns("GET");
request.Setup(h => h.Accept).Returns("application/x-protobuf");

异常(exception)是:

 System.NotSupportedException was unhandled by user code  
HResult=-2146233067 Message=Invalid setup on a non-virtual
(overridable in VB) member: h => h.Accept Source=Moq StackTrace:
at Moq.Mock.ThrowIfCantOverride(Expression setup, MethodInfo method)
at Moq.Mock.<>c__DisplayClass1f`2.<SetupGet>b__1e()
at Moq.PexProtector.Invoke[T](Func`1 function)
at Moq.Mock.SetupGet[T,TProperty](Mock mock, Expression`1 expression, Func`1 condition)
at Moq.Mock.<>c__DisplayClass1c`2.<Setup>b__1b()
at Moq.PexProtector.Invoke[T](Func`1 function)
at Moq.Mock.Setup[T,TResult](Mock mock, Expression`1 expression, Func`1 condition)
at Moq.Mock`1.Setup[TResult](Expression`1 expression)
at HarmonyTests.MockWebRequestCreate.CreateTestRequest(Stream protobuf)

最佳答案

使用最小起订量无法实现您尝试执行的操作。 Moq 不能模拟具体实现的非虚拟方法(使用 IInterface 就可以了)。

你有几个选择,

  1. 创建一个使用HttpWebRequest(例如IHttpClient)实现的简单接口(interface),并在您的单元测试中使用它
  2. 使用不同的模拟框架(查看 this post 的想法)。

关于c# - 模拟 HttpWebRequest 接受最小起订量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26002084/

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