我有一个 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/