c# - 如何找出最小起订量中缺少的内容?
问题描述
我在 Moq 中收到一条错误消息
Message: Test method [...] threw exception:
Moq.MockException: IVeracrossAPI.Authorization = Basic Og== invocation failed with mock behavior Strict.
All invocations on the mock must have a corresponding setup.
似乎很明显。不幸的是,在我的代码中我已经有了这个:
var VeracrossMock = new Mock<IVeracrossAPI>(MockBehavior.Strict);
var byteArray = Encoding.ASCII.GetBytes("username:password1234");
VeracrossMock.Setup(a => a.Authorization).Returns(new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray)));
所以现在我不确定如何IVeracrossAPI.Authorization
丢失。有什么方法可以弄清楚到底发生了什么?
解决方案
使用MockBehavior.Strict
它意味着对于模拟,任何被调用的成员都必须有一个对应的成员,Setup
否则它将引发异常。
当您使用MockBehavior.Loose
时,这也是默认值,然后当您调用未设置的成员时,它将只返回成员结果的默认类型。
显示的当前设置将用于从属性中获取值。
从异常看来,测试试图设置尚未设置的值。请记住,属性基本上是两种方法合二为一(get_Property 和 set_Property)。
建议对属性进行存根,以便跟踪分配的值。
// start "tracking" sets/gets to this property
VeracrossMock.SetupProperty(_ => _.Authorization);
var byteArray = Encoding.ASCII.GetBytes("username:password1234");
var authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
//set value
VeracrossMock.Object.Authorization = authorization;
推荐阅读
- google-cloud-platform - 什么是连接到 Google Cloud 上的 SQL 数据库的更快方法
- ssh - 无法再通过 ssh 访问 vm 实例
- r - Subtracting columns with the same prefix based on different suffix loop ends with starts with
- python - 用数组替换熊猫数据框行的一部分
- angular - 如何在多台机器上处理 Angular 应用程序
- python - 将元组列表转换为数组,其中每个元组中的第一个元素是数组索引?
- machine-learning - I want to converge the keras model with just FC-layer
- c - Problem with Makefile compilation on Ubuntu, -lhidapi-libusb library
- sql - 指定了 WHERE 的行之间的 sql 差异
- git - Execute command from git configuration