我正在研究这个WebAPI项目,我需要为它创建单元测试。该项目的基础是使用VS 2010创建的,然后添加了WebApi模块。C#WebApi单元测试和模拟控制器
控制器的工作方式有点妨碍测试/模拟。我使用xUnit和Moq,但绝对没有必要坚持这两个。
该应用程序使用特定对象来处理数据库访问,所以我有 controllerObject和其构造器需要DataAccessObject
我有嘲讽控制器/数据访问对问题。我试图运行的第一个测试是GetAllFromDataBase,但我没有真正知道如何去做。
编辑:
我做了什么的Cuong乐告诉我,现在全是移动的,我真的apreciate它。但我陷入了另一个问题。要访问API,有一个用户名/密码对,我的控制器使用Thread.CurrentPrincipal.Identity.Name;现在我需要设置这个值,以使其完全工作,我猜。
另外valueServiceMock.Setup(service => service.GetValues()) .Returns(new [] {“value1”,“value2”});
似乎没有工作。因为代码试图访问数据库,并且什么也得不到,因为它无法获得有效的用户名以寻找
你不应该嘲笑控制器,你会嘲笑控制器需要的服务。如果你嘲笑控制器,你不会测试控制器。这是完整的一点。看看这个帖子:http://www.peterprovost.org//blog/2012/06/16/unit-testing-asp-dot-net-web-api/ – tugberk 2012-08-03 22:01:55
你是否检查过你通过模拟对象构造函数是这样的:var controller = new ValuesController(valueServiceMock.Object); – 2012-08-07 06:35:50