c# - 如何使用 Moq 验证字符串数组中的值是否已设置

标签 c# arrays moq

我有一个 Game 类,它依赖于一个对象,该对象具有 string[,] 类型的属性 Squares

我想验证调用 Games.Play 方法会尝试在依赖项的 Squares 数组中适本地设置一个值(例如,在 2D 中设置空值下面的数组)。

var _grid = new Mock<IGrid>();
_grid.Setup(g => g.Squares).Returns({{"O", "O",null}});
var game = new Game(_x0Grid.Object);

var oblivion = game.Play();

_grid.VerifySet(g => g.Squares[0, 2] = It.IsAny<string>());

但是尝试验证以上抛出:

System.MissingMethodException : Constructor on type 'System.String[,]' not found.

关于我如何使用最小起订量验证上述内容有什么建议吗?

最佳答案

VerifySet 用于测试是否设置了 mock 上的属性。它无法检测数组的元素是否已更改。我的建议是改为测试数组的内容:

var array = new string[,] { {"O", "O", null } };
var _grid = new Mock<IGrid>();
_grid.Setup(g => g.Squares).Returns(array);
var game = new Game(_grid.Object);

var oblivion = game.Play();

Assert.IsNotNull(array[0, 3]);

关于c# - 如何使用 Moq 验证字符串数组中的值是否已设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20483057/

相关文章:

c# - 由于格式不正确,加载程序集失败

C# HTMLAgilityPack 获取内容 &lt;script&gt;

c++ - 语言数组和 std::array 初始化之间有什么区别?

c# - 测试覆盖 IsValid 的 ValidationAttribute

c# - ASP.NET MVC Controller 单元测试 - UrlHelper 扩展问题

c# - Task.Run 的替代方案

c# - 无法将类型 'System.Collections.Generic.KeyValuePair<int, dynamic>' 转换为 'System.Collections.Generic.Dictionary<int, dynamic>

c# - 如何在 C 中初始化多维字符数组?

python - A[i] 和 A[i, :] in n-dimensional(n>1) numpy array? 有什么区别

c# - Moq 与 Autofac Func<Owned<IClass>>