使用Moq

时间:2018-08-20 08:36:17

标签: c# asp.net-web-api moq

我想使用moq在asp.net core 2.0中测试我的Web api。 使用诸如:GetAll,getByID之类的操作没有问题。 但是,当我要测试“插入”或“更新”之类的方法时,问题就开始了。 每当我配置设置时,例如:

serviceMock.Setup(x => x.Update(someModel))
                    .Returns(someModel);

然后调用被测控制器的方法:

ControllerUnderTest.UpdateRespondentList(someModel.ID, someModel);

控制器可以正确接收数据,但模拟列表的计数器不会增加。

我想问问,还有什么其他方法可以使用.Verify()方法进行测试或创建全新的List吗?

-我的意思是: Unit testing LINQ to SQL CRUD operations using Moq

这是我注入模拟服务的方式:

ControllerUnderTest = new RespondentListController(_config, serviceMock.Object);

我认为cinfiguration之所以有效,是因为每当我测试诸如getall之类的方法时,我都可以访问mockedSerivice

算法应如下所示: 通过ControllerUnderTest-> Asser.Equal(prevStateOfCounter,currentStateOfCounter-1)将对象插入到模拟列表中

1 个答案:

答案 0 :(得分:1)

您应该能够验证调用该方法的次数,类似于以下内容;

serviceMock.Verify(m=>m.Update(someModel),Times.Once);

serviceMock.Verify(m=>m.Update(someModel),Times.Exactly(x);

或者,您可以实现一个可以声明的回调;

int methodCount= 0;
serviceMock.Setup(m => m.Update(someModel)).Callback(() => methodCount++ ).Returns(someModel);