예제 #1
0
        public void Cannot_Save_Invalid_Changes()
        {
            //布置——创建模仿存储库
            Mock<IRoleInfoRepository> mock = new Mock<IRoleInfoRepository>();

            //布置——创建控制器
            RolesController controller = new RolesController(mock.Object);

            //布置——创建一个产品
            RoleInfo role = new RoleInfo { RoleID = Guid.NewGuid(), RoleName = "测试顾问" };

            //布置——把一个错误添加到模型状态
            controller.ModelState.AddModelError("error", "error");

            //动作——试着保存这个产品
            ActionResult result = controller.Edit(role);

            //断言——检查,调用了存储库
            mock.Verify(m => m.SaveRoleInfo(It.IsAny<RoleInfo>()),Times.Never());

            //断言——检查方法的结果类型
            Assert.IsInstanceOfType(result, typeof(ViewResult));
        }
예제 #2
0
        public void Can_Save_Valid_Changes()
        {
            //布置——创建模仿存储库
            Mock<IRoleInfoRepository> mock = new Mock<IRoleInfoRepository>();

            //布置——创建控制器
            RolesController controller = new RolesController(mock.Object);

            //布置——创建一个产品
            RoleInfo role = new RoleInfo {RoleID=Guid.NewGuid(), RoleName = "测试顾问" };

            //动作——试着保存这个产品
            ActionResult result = controller.Edit(role);

            //断言——检查,调用了存储库
            mock.Verify(m => m.SaveRoleInfo(role));

            //断言——检查方法的结果类型
            Assert.IsNotInstanceOfType(result, typeof(ViewResult));
        }
예제 #3
0
        public void Cannot_Edit_Nonexistent_Product()
        {
            //布置
            //——创建模仿存储库
            RoleInfo[] roles = new RoleInfo[]{
                new RoleInfo{RoleID = Guid.NewGuid(), RoleName = "R1",RoleEN="REN1"},
                new RoleInfo{RoleID = Guid.NewGuid(), RoleName = "R2",RoleEN="REN2"},
                new RoleInfo{RoleID = Guid.NewGuid(), RoleName = "R3",RoleEN="REN3"}
            };

            Mock<IRoleInfoRepository> mock = new Mock<IRoleInfoRepository>();
            mock.Setup(m => m.RolesInfo).Returns(roles.AsQueryable());

            //布置——创建控制器
            RolesController controller = new RolesController(mock.Object);

            //动作
            RoleInfo r1 = controller.Edit(Guid.NewGuid()).Model as RoleInfo;

            //断言
            Assert.IsNull(r1);
        }
예제 #4
0
        public void Can_Edit_Role()
        {
            //布置
            //——创建模仿存储库
            RoleInfo[] roles =  new RoleInfo[]{
                new RoleInfo{RoleID = Guid.NewGuid(), RoleName = "R1",RoleEN="REN1"},
                new RoleInfo{RoleID = Guid.NewGuid(), RoleName = "R2",RoleEN="REN2"},
                new RoleInfo{RoleID = Guid.NewGuid(), RoleName = "R3",RoleEN="REN3"},
                new RoleInfo{RoleID = Guid.NewGuid(), RoleName = "R4",RoleEN="REN4"},
                new RoleInfo{RoleID = Guid.NewGuid(), RoleName = "R5",RoleEN="REN5"},
                new RoleInfo{RoleID = Guid.NewGuid(), RoleName = "R6",RoleEN="REN6"}
            };

            Mock<IRoleInfoRepository> mock = new Mock<IRoleInfoRepository>();
            mock.Setup(m => m.RolesInfo).Returns(roles.AsQueryable());  //使用Setup更改RolesInfo的结果,不适用DI,而是用后续的Return返回结果

            //布置——创建控制器
            RolesController controller = new RolesController(mock.Object);

            //动作
            RoleInfo r1 = controller.Edit(roles[1].RoleID).Model as RoleInfo;
            RoleInfo r2 = controller.Edit(roles[2].RoleID).Model as RoleInfo;
            RoleInfo r3 = controller.Edit(roles[3].RoleID).Model as RoleInfo;

            //断言
            Assert.AreEqual(r1.RoleName, "R2");
            Assert.AreEqual(r2.RoleName, "R3");
            Assert.AreEqual(r3.RoleName, "R4");
        }