[英]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.