Professional Documents
Culture Documents
Table of Contents
1 Thêm mới dữ liệu trong MVC .......................................................................................... 2
2 Sửa đổ i dữ liêụ trong MVC .................................................................................................. 5
3 Xây dựng quy trin ̀ h test trong ứng du ̣ng ASP.NET MVC ................................................ 9
3.1 Tạo một controller để test. ........................................................................................... 10
3.2 Test một view được trả về từ một controller................................................................ 14
3.3 Test một ViewData được trả về từ một controller ....................................................... 15
3.4 Test một Result Action được trả về từ một controller ................................................. 16
4 Tài liệu tham khảo ............................................................................................................... 16
1 Thêm mới dữ liệu trong MVC
Sử dụng ứng dụng BanHang đã có:
Thêm mô ̣t phương thức trong Models\DataClasses.cs thực hiê ̣n ghi nhâ ̣n thêm mới vào cơ sở dữ liê ̣u.
Models\DataClasses.cs
using System;
using System.Collections.Generic;
using System.Linq;
namespace BanHang.Models
{
partial class DataClassesDataContext
{
public List<LoaiSanPham> LayCacLoaiSanPham()
{
return LoaiSanPhams.ToList();
}
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 2
public SanPham LaySanPhamTuID(int id)
{
return SanPhams.Single(s => s.Id == id);
}
namespace BanHang.Controllers
{
public class SanPhamController : Controller
{
DataClassesDataContext data = new DataClassesDataContext();
return RedirectToAction("DanhMucLoaiSanPham");
}
List<SanPham> sp = data.LaySanPhamTuLoaiSanPham(id);
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 3
public ActionResult ChiTietSanPham(int id)
{
ViewData["Title"] = "Chi tiết sản phẩm";
data.ThemMoiSanPham(sp);
data.SubmitChanges();
return RedirectToAction("DanhMucLoaiSanPham");
}
}
}
Tạo Views cho phép thêm mới sản phẩm.
Views\SanPham\ThemMoiSanPham.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
AutoEventWireup="true" CodeBehind="ThemMoiSanPham.aspx.cs"
Inherits="BanHang.Views.SanPham.ThemMoiSanPham" %>
<asp:Content ID="viewThemMoiSanPham" ContentPlaceHolderID="MainContent"
runat="server">
<form action="Create" method="post">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>Tên sản phẩm:</td>
<td><input type="text" id="TenSanPham" name="TenSanPham" /></td>
</tr>
<tr>
<td>Đơn giá:</td>
<td><input type="text" id="DonGia" name="DonGia" /></td>
</tr>
<tr>
<td>Số lượng:</td>
<td><input type="text" id="SoLuong" name="SoLuong" /></td>
</tr>
<tr>
<td>Loại sản phẩm:</td>
<td>
<%--<input type="text" id="LoaiSanPham" name="LoaiSanPham" />--
%>
<%=
Html.DropDownList("loaiSanPham",(SelectList)ViewData["lsp"]) %>
</td>
</tr>
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 4
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Thêm mới sản phẩm"
/></td>
</tr>
</table>
</form>
</asp:Content>
Thực thi sẽ cho ra kế t quả như sau (figure 2)
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 5
</asp:Content>
Danh sách sản phẩ m bây giờ có thêm mô ̣t actionlink “Edit” bên ca ̣nh mỗi sản phẩ m để người dùng
tương tác với chức năng câ ̣p nhâ ̣t dữ liê ̣u sản phẩ m . (figure 3)
namespace BanHang.Controllers
{
public class SanPhamController : Controller
{
DataClassesDataContext data = new DataClassesDataContext();
return RedirectToAction("DanhMucLoaiSanPham");
}
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 6
public ActionResult DanhSachSanPham(int id)
{
ViewData["Title"] = "Danh sá
ch sả
n phẩ
m trong loạ
i sả
n phẩ
m ";
List<SanPham> sp = data.LaySanPhamTuLoaiSanPham(id);
data.ThemMoiSanPham(sp);
data.SubmitChanges();
return RedirectToAction("DanhMucLoaiSanPham");
}
}
}
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 7
Trong lớp Controllers \SanPhamController.cs đă ̣t con trỏ chuô ̣t bên ca ̣nh phương thức
CapNhatSanPham, click phải chuô ̣t cho ̣n Add View (figure 4)
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 8
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<BanHang.Models.SanPham>" %>
<h2>CapNhatSanPham</h2>
<fieldset>
<legend>Fields</legend>
<p>
<label for="Id">Id:</label>
<%= Html.TextBox("Id") %>
<%= Html.ValidationMessage("Id", "*") %>
</p>
<p>
<label for="TenSanPham">TenSanPham:</label>
<%= Html.TextBox("TenSanPham") %>
<%= Html.ValidationMessage("TenSanPham", "*") %>
</p>
<p>
<label for="DonGia">DonGia:</label>
<%= Html.TextBox("DonGia") %>
<%= Html.ValidationMessage("DonGia", "*") %>
</p>
<p>
<label for="SoLuong">SoLuong:</label>
<%= Html.TextBox("SoLuong") %>
<%= Html.ValidationMessage("SoLuong", "*") %>
</p>
<p>
<label for="LoaiSanPham">LoaiSanPham:</label>
<%= Html.TextBox("LoaiSanPham") %>
<%= Html.ValidationMessage("LoaiSanPham", "*") %>
</p>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
<% } %>
<div>
<%=Html.ActionLink("Back to List", "Index") %>
</div>
</asp:Content>
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 9
Figure 6. Ứng dụng test được tạo
namespace BanHang.Controllers
{
public class SanPhamController : Controller
{
DataClassesDataContext data = new DataClassesDataContext();
return RedirectToAction("DanhMucLoaiSanPham");
}
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 10
// Code cua ban o day
ViewData["Title"] = "Danh mụ
c loạ
i sả
n phẩ
m ";
List<SanPham> sp = data.LaySanPhamTuLoaiSanPham(id);
data.ThemMoiSanPham(sp);
data.SubmitChanges();
return RedirectToAction("DanhMucLoaiSanPham");
}
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 11
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Update()
{
//UpdateModel(sp,FormCollection.KeysCollection);
return RedirectToAction("DanhMucLoaiSanPham");
}
}
}
Xây dựng một lớp test cho Controllers\SanPhamController.cs ở trên, tạo SanPhamControllerTest.cs từ
folder Controllers của projects chọn Add Unit Test (figure 7)
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 12
BanHang.Tests\Controllers\SanPhamControllerTest.cs
using BanHang.Controllers;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.VisualStudio.TestTools.UnitTesting.Web;
using System.Web.Mvc;
namespace BanHang.Tests
{
/// <summary>
///This is a test class for SanPhamControllerTest and is intended
///to contain all SanPhamControllerTest Unit Tests
///</summary>
[TestClass()]
public class SanPhamControllerTest
{
/// <summary>
///Gets or sets the test context which provides
///information about and functionality for the current test run.
///</summary>
public TestContext TestContext
{
get
{
return testContextInstance;
}
set
{
testContextInstance = value;
}
}
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 13
#endregion
/// <summary>
///A test for ChiTietSanPham
///</summary>
[TestMethod()]
[HostType("ASP.NET")]
[AspNetDevelopmentServerHost("D:\\@Projects\\@Test\\HiTest\\BanHang\\BanHang",
"/")]
[UrlToTest("http://localhost:2430/")]
public void ChiTietSanPhamTest()
{
SanPhamController target = new SanPhamController(); // TODO: Initialize
to an appropriate value
int id = 0; // TODO: Initialize to an appropriate value
ActionResult expected = null; // TODO: Initialize to an appropriate
value
ActionResult actual;
actual = target.ChiTietSanPham(id);
Assert.AreEqual(expected, actual);
Assert.Inconclusive("Verify the correctness of this test method.");
}
}
}
Kiểm tra xem view được trả về có đúng không và khi nào thì nó được gọi đến, phương thức nào của
view được trả về.
BanHang.Tests\Controllers\SanPhamControllerTest.cs
[TestMethod()]
[HostType("ASP.NET")]
[AspNetDevelopmentServerHost("D:\\@Projects\\@Test\\HiTest\\BanHang\\BanHang",
"/")]
[UrlToTest("http://localhost:2430/")]
public void DetailViewTest()
{
SanPhamController sp = new SanPhamController();
var result = sp.ChiTietSanPham(8) as ViewResult;
Assert.AreEqual("ChiTietSanPham", result.ViewName);
}
Bắt đầu thực hiện công việc test (figure 9). Lựa chọn một phương thức test Run Selection
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 14
Figure 9. Thực hiện các phương thức test
Kết quả thực hiện test (figure 10)
BanHang.Tests\Controllers\SanPhamControllerTest.cs
[TestMethod]
[HostType("ASP.NET")]
[AspNetDevelopmentServerHost("D:\\@Projects\\@Test\\HiTest\\BanHang\\BanHang",
"/")]
[UrlToTest("http://localhost:2430/")]
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 15
{
//
// TODO: Add test logic here
//
var controller = new BanHang.Controllers.SanPhamController();
var result = controller.ChiTietSanPham(8) as ViewResult;
var sp = (SanPham)result.ViewData.Model;
Assert.AreEqual("Yamaha", sp.TenSanPham);
}
BanHang.Tests\Controllers\SanPhamControllerTest.cs
[TestMethod]
[HostType("ASP.NET")]
[AspNetDevelopmentServerHost("D:\\@Projects\\@Test\\HiTest\\BanHang\\BanHang",
"/")]
[UrlToTest("http://localhost:2430/")]
Microsoft Vietnam – DPE Team |Bài số 5: Chỉnh sửa dữ liệu với MVC 16