- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Apicontroller
,它依赖于工作单元对象。如何编写模拟 ApiController
的测试用例,它依赖于 ApiController
构造函数中实现的工作单元。
代码如下:
API Controller :
public class UserController : ApiController
{
public IUoW UoW { get; set; }
// GET api/user
public UserController(IUoW uow)
{
UoW = uow;
}
public IEnumerable<Users> Get()
{
return UoW.Users.Getall();
}
}
测试用例:
[TestMethod]
public void TestApiController()
{
var userManager = new Mock<IUoW>();
userManager.Setup(s => s.Users);
var controller = new UserController(userManager.Object);
var values = controller.Get();
Assert.IsNotNull(values);
}
UoW.Users 中提到的用户类是
public class UoW:IUoW,IDisposable
{
private MvcWebApiContext DbContext { get; set; }
protected IRepositoryProvider RepositoryProvider { get; set; }
private IRepository<T> GetStandardRepo<T>() where T : class
{
return RepositoryProvider.GetRepositoryForEntityType<T>();
}
public IRepository<Users> Users
{
get { return GetStandardRepo<Users>(); }
}
}
Users
类本身是
[Table("UserProfile")]
public class Users
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
[DataType(DataType.PhoneNumber)]
public long Mobile { get; set; }
}
当我尝试调试测试用例时,测试用例显示对象 UoW.Users
在 UserController
中为 null。很明显它不是通过 WebActivator
初始化的,因为这里没有通过模拟调用 global.asax。现在如何在此上下文中编写成功的测试场景,以便 WebApicontroller
返回带有数据的用户对象?
最佳答案
你在使用 Moq 吗?
因为我看不到 UoW.Users
属性是什么类型,所以我无法演示如何正确模拟它(已更新 IRepository),但应该模拟它和 GetAll 方法 stub 以返回用户示例列表。
已更新
var userManager = new Mock<IUoW>();
userManager.Setup(s => s.Users).Returns(()=>
{
var userReposisitory = new Mock<IRepository<Users>>();
userReposisitory.Setup(ur => ur.GetAll()).Returns(()=> {
var listOfUsers = new List<Users>();
listOfUsers.Add(new Users { FirstName = "Example" });
return listOfUsers.AsQueryable();
});
return userReposisitory.Object;
});
var controller = new UserController(userManager.Object);
var result = controller.Get();
Assert.IsNotNull(result);
Assert.IsTrue(result.Count() > 0);
关于unit-testing - 模拟具有工作单元依赖性的 ApiController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13750737/
现有项目的 Controller 继承自: Controller:RouteTable.Routes.MapRoute with "{controller}/{action}/{id}"。 ApiCo
我正在计划一个“通用的”客户端-服务器架构。当前结构如下: 服务器 Asp.Net WebApp(托管在本地或以天蓝色) EntityFrameworkCore数据层 带有每个EF-Model Con
我的 ApiController 没有收到包装在 View 模型中的 DateTime 对象。 这是我的 Controller 的内容。 public class FlowApiController
我有一个 ApiController 并想用包括路由在内的单元测试来测试它。 一个例子: [RoutePrefix("prefix")] public class Controller : ApiCo
我已经使用 Azure 移动应用程序创建了后端服务。使用提供的 SDK,离线同步在移动客户端上运行良好。我使用的所有 Controller 都是 TableController。现在我想添加一个简单的
ApiController 是否有可用于初始化异步资源的扩展点/覆盖? 我想要这样的东西: public ValuesController : ApiController { private
使用 Visual Studio 2012.2,MVC4 网络应用程序。 我的 ApiController 有这样的请求: http://localhost/api/keys?ids[]=1&ids[
我正在使用 .NET Framework 4.0 和 C# 开发 ASP.NET Web Api 应用。 我有这个: using System; using System.Collections.Ge
我研究了如何在 MVC 项目中使用 API,但我对此有一些疑问。 (在有人问之前,我正在用 C# 语言编写)。 到目前为止,我知道 Api 的路由配置是在 WebApiConfig 类中设置的,默认路
如果我有一个只有简单属性(例如 Name 等)的 Customer 类,那么我可以创建一个派生的 CustomersController来自 ApiController,并使用 URL /api/cu
基于此视频 https://www.youtube.com/watch?v=IVvJX4CoLUY我添加了 using System.Web; using System.Web.Http; 但我仍然得
我正在 VS 2013 中处理现有的 Windows 服务项目。 我添加了一个 Web API Controller 类,我现在不记得它是 (v2.1) 还是 (v1) Controller 类...
正如标题所示,我想扩展 ApiContoller 类以包含一些自定义属性和辅助方法,但每当我尝试将它用于 Controller 时,我都会收到消息 Multiple actions were foun
我正在尝试测试我制作的 WebApi Controller 。我尝试使用依赖注入(inject)来简化测试。尽管它实际上有相反的效果。 我目前有一个 Controller 在其构造函数中采用 repo
我正在尝试创建一个用于登录的 Api Controller ,应该在使用我的 CustomerController (Api) 访问数据之前使用它。 问题是当我尝试访问 AccountControll
我做了一个简单的 GET,循环 10 次,每次迭代等待 1 秒来模拟工作。当我从 Chrome 中的一个选项卡调用此路由时,需要 10 秒(如预期)。当我同时调用此路由(从 2 个不同的选项卡)时,第
我想在我计划跨项目重用的类库中放置一个具有多个操作和子路由的 REST [ApiController]。我想通过端点路由注册 Controller 路由,并在每个项目的 appsettings.jso
我有一个 Apicontroller,它依赖于工作单元对象。如何编写模拟 ApiController 的测试用例,它依赖于 ApiController 构造函数中实现的工作单元。 代码如下: API
我目前正在从事一个项目,其中每个 API Controller 都需要记录事件。一个粗略的例子可能是: [Route(...)] public IHttpActionResult Foo(...) {
在我的 apicontroller 中,我使用 base.user 来标识要在查找中使用的经过身份验证的用户。现在我正在为此编写单元测试,但我不知道如何模拟 apicontroller.user。我需
我是一名优秀的程序员,十分优秀!