繁体   English   中英

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

[英]How to verify that a value in a string array has been set using 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:找不到类型为“System.String [,]”的构造函数。

有关如何使用Moq验证上述内容的任何建议?

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]);

尝试这个:

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

var oblivion = game.Play();

Assert.IsNotNull(g.Squares[0, 2]);

// AND/OR...
Assert.AreEqual("0", g.Squares[0, 2]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM