我有一个类Game
,它依赖于具有Squares
类型属性string[,]
的对象。
我想验证调用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:类型为&#39; System.String [,]&#39;的构造函数没找到。
有关如何使用Moq验证上述内容的任何建议?
答案 0 :(得分:1)
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]);
答案 1 :(得分:1)
试试这个:
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]);