Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Moq链法_C#_Unit Testing_Mocking_Moq - Fatal编程技术网

C# Moq链法

C# Moq链法,c#,unit-testing,mocking,moq,C#,Unit Testing,Mocking,Moq,我正在尝试使用Moq模拟和设置链式方法 以下是我试图模仿的方法: TeamMember teamMember = _unitOfWork .TeamMembers .Query() .ToList() .Where(t => t.AssociationCode.ToString() == code && Crypto.EncryptStringAES(t.Id.ToString(), sharedSecret) == has

我正在尝试使用Moq模拟和设置链式方法

以下是我试图模仿的方法:

TeamMember teamMember = _unitOfWork
    .TeamMembers
    .Query()
    .ToList()
    .Where(t => t.AssociationCode.ToString() == code 
        && Crypto.EncryptStringAES(t.Id.ToString(), sharedSecret) == hash)
    .SingleOrDefault();
这里是我试图模仿它的地方:

var unitOfWorkMock = new Mock<IUnitOfWork>();
var iQueryableMock = new Mock<IQueryable<TeamMember>>();
var iToListMock = new Mock<List<TeamMember>>();
var whereMock = new Mock<IList<TeamMember>>();
var singleMock = new Mock<IEnumerable<TeamMember>>();

unitOfWorkMock
    .Setup(u => u.TeamMembers
        .Query())
        .Returns(iQueryableMock.Object);

iQueryableMock
    .Setup(i => i.ToList())
        .Returns(iToListMock.Object); //This line throws the error

whereMock
    .Setup(w =>
            w.Where(It.IsAny<Func<TeamMember, bool>>()))
        .Returns(singleMock.Object);

singleMock
    .Setup(s =>
            s.SingleOrDefault())
        .Returns(new TeamMember()
        {
            Email = "Test@TeamMember.com"
        });
var unitOfWorkMock=new Mock();
var iQueryableMock=new Mock();
var iToListMock=new Mock();
var whereMock=new Mock();
var singleMock=new Mock();
工作单元模拟
.设置(u=>u.TeamMembers
.Query())
.Returns(iQueryableMock.Object);
iQueryableMock
.Setup(i=>i.ToList())
.Returns(iToListMock.Object)//这行抛出错误
whereMock
.设置(w=>
w、 Where(It.IsAny())
.Returns(singleMock.Object);
单模拟
.设置(s=>
s、 SingleOrDefault())
.Returns(新团队成员()
{
电子邮件=”Test@TeamMember.com"
});
当我运行此测试时,会出现以下错误:

表达式引用不属于模拟对象的方法:
i=>i.ToList()

我已经看过了,也尝试过做类似的事情,但我肯定错过了什么


我是新手,所以如果有人能帮助我,我将不胜感激

您的方法链模拟看起来不错,但您的问题是,这是一个