我想使用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)将对象插入到模拟列表中
答案 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);