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

C# 如何验证字符串数组中的值是否已使用Moq设置,c#,arrays,moq,C#,Arrays,Moq,我有一个类Game,它依赖于一个对象,该对象的属性Squares类型为string[,] 我想验证调用Games.Play方法是否会尝试在依赖项的Squares数组中适当地设置值(例如,将下面2D数组中的空值设置为某个值) var\u grid=new Mock(); _Setup(g=>g.Squares).Returns({{“O”,“O”,null}); var game=新游戏(x0Grid.Object); var oblivion=game.Play(); _grid.VerifyS

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

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

var\u grid=new Mock();
_Setup(g=>g.Squares).Returns({{“O”,“O”,null});
var game=新游戏(x0Grid.Object);
var oblivion=game.Play();
_grid.VerifySet(g=>g.Squares[0,2]=It.IsAny());
但是,尝试验证上述抛出:

System.MissingMethodException:找不到类型为“System.String[,]”的构造函数


关于如何使用Moq验证上述内容,有何建议

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

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数组=新字符串[,]{{“O”,“O”,null};
var_grid=new Mock();
_设置(g=>g.Squares).返回(数组);
var game=新游戏(_grid.Object);
var oblivion=game.Play();
IsNotNull(数组[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]);
var\u grid=new Mock();
_Setup(g=>g.Squares).Returns({{“O”,“O”,null});
var game=新游戏(x0Grid.Object);
var oblivion=game.Play();
Assert.IsNotNull(g.Squares[0,2]);
//和/或。。。
AreEqual(“0”,g.平方[0,2]);

你能发布IGrid的界面定义吗?是
新游戏(\u x0Grid.Object)
应该是
新游戏(\u grid.Object)
?谢谢你的解决方案和评论。模拟框架无法检测数组中的更改是有道理的。谢谢hughes先生。。。这也行得通(我注意到您发现了outofbounds数组索引-酷)。
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]);