C# 用最小起重量法测试api积垢运行

C# 用最小起重量法测试api积垢运行,c#,asp.net-web-api,moq,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

我想使用moq在asp.net core 2.0中测试我的Web api。 对于像:GetAll、getByID这样的操作,没有问题。 但当我想测试插入或更新之类的方法时,问题就开始了。 无论何时配置设置,例如:

serviceMock.Setup(x => x.Update(someModel))
                    .Returns(someModel);
然后调用被测控制器的方法:

ControllerUnderTest.UpdateRespondentList(someModel.ID, someModel);
控制器正确接收数据,但模拟列表的计数器并没有增加

我想你们问一下,有没有其他的方法,然后使用。验证方法或创建一个全新的列表来测试它

-我的意思是:

我是如何注入模拟服务的:

ControllerUnderTest = new RespondentListController(_config, serviceMock.Object);
在我看来,配置是有效的,因为每当我测试诸如:getall之类的方法时,我都可以访问MockedService

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

您应该能够验证调用该方法的次数,如下所示:

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

或者,您可以实现一个回调,您可以对其进行断言

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

是的,我已经知道了;但是我要问的是,有没有其他方法来测试这个问题,比如在我的模拟对象服务列表中增加计数计数器,而不是在我发布的链接中。您的示例更新方法不会增加基础列表中的任何计数,因此您只能计算该方法被调用的次数。您可以按照上面的方法执行此操作,或者您可以在模拟中实现一个回调,该回调会增加一个计数器,然后您可以对其进行断言。但我仍然想向列表中添加一个元素,该元素会导致计数器增加。@Kenik您可以在返回前将其添加到回调中的假列表中ok,我想可能还有其他方法;谢谢你的回复;请阅读并出示一张照片。
int methodCount= 0;
serviceMock.Setup(m => m.Update(someModel)).Callback(() => methodCount++ ).Returns(someModel);