Trong bài viết này, tôi tò mò về cha có mang hết sức đặc trưng trong unit demo là Stub, Mock cùng Nhái, ý nghĩa quan niệm của bọn chúng là gì và chúng được thực hiện như thế nào vào ĐK nào. trước hết, bọn họ phải tư tưởng unit kiểm tra là gì và quy mô TDD là như thế nào. Các chúng ta cũng có thể tham khảo các định nghĩa trên sinh sống liên kết sau: unit-test-voi-phat-trien-phan-mem-hien-dai
Cả bố quan niệm Stub, Mochồng và Fake thường rất đặc biệt vào unit chạy thử và gắn sát cùng với khái niệm về "de-coupled" architecture kiến thiết. "de-coupling" architecture có mục tiêu chính là thiết kế phần mềm làm thế nào cho chúng ta cũng có thể tách bóc ứng dụng ra thành các phần đơn nhất (những unit) nhưng mà không xẩy ra ảnh hưởng bởi những phần khác hoặc chỉ bị ảnh hưởng một bí quyết về tối tphát âm.
Bạn đang xem: Mock test là gì
ví dụ như, tôi bao gồm một class nên viết unit demo với các class khác tương quan nhỏng liên kết DB hoặc Hotline service api. Bây tiếng, tôi mong mỏi khám nghiệm những class, nơi những đối tượng người sử dụng dựa vào là không chuẩn bị sẵn sàng, vị vậy vào trường hợp này, tôi rất cần được triển khai một đối tượng Mochồng hoặc Nhái để khám nghiệm class của tớ. Chúng ta vẫn bỏ qua thực tiễn chuyển động DB hoặc tác dụng thực thụ của câu hỏi gọi service. Theo giải pháp này chúng ta cũng có thể kiểm soát logic chính của class mà lại bọn họ bắt buộc triển khai unit thử nghiệm.
1. Moông xã là gì?
Mochồng object (MO) là 1 trong đối tượng người sử dụng ảo tế bào rộp các đặc thù với hành động đồng nhất như đối tượng người tiêu dùng thực được truyền vào bên phía trong khối hận mã đang vận hành nhằm mục tiêu soát sổ tính đúng đắn của các vận động phía bên trong. Moông xã object gồm những Điểm lưu ý sau:
Đơn giản rộng đối tượng người sử dụng thực nhưng mà vẫn giữ được sự xúc tiến cùng với những đối tượng người tiêu dùng khác.
Không lặp lại nội dung đối tượng người sử dụng thực.
Cho phxay thiết lập cấu hình các trạng thái riêng biệt trợ giúp cho Việc thực hiện unit chạy thử.
2. Stub là gì?
Stub là một trong những lịch trình hoặc yếu tắc trả lập (sửa chữa thay thế mang đến công tác hoặc nguyên tố không code dứt nhằm kiểm thử) nó dùng để kiểm test... ví dụ, trong một dự án gồm 4 modules, mà lại mang đến thời gian chạy thử Hơn nữa một module không code xong xuôi, để chạy thử được thì rất cần được bao gồm 4 modules này, vậy thì rất cần được có một công tác trả lập module này để tiến hành thử nghiệm. Chương trình trả lập đến module này được điện thoại tư vấn là STUB.
Oh, cả nhì đều sở hữu vẻ nặng nề hiểu!
lúc tôi bước đầu khám phá về unit kiểm tra, tôi hết sức khó để riêng biệt được Moông chồng với Stub khác biệt như thế nào, cả nhì đều rất như thể nhau trong tư tưởng. Nhưng một khi bạn hiểu đúng cách dán rồi thì các bạn sẽ nhận thấy sự biệt lập thực thụ.
Một Stub quan trọng trả về hiệu quả unit demo là fail cũng chính vì bạn biết đầy đủ gì nhiều người đang tiến hành cùng nguyên nhân tại sao bạn đang tiến hành nó, Nó được áp dụng là để thay thế cho một module cùng được mang sử là nên thực hiện đúng những trách nhiệm được giao. Tuy nhiên, Moông xã object chỉ là một trong đối tượng người sử dụng nhưng mà bắt chước các đối tượng người tiêu dùng thực thụ. Nếu logic bao gồm của method là sai thì các unit kiểm tra sẽ fail trong cả lúc chúng ta thiết lập cấu hình moông xã object đúng đắn.
3. Nhái là gì
Nlỗi họ biết, ý nghĩa của Nhái là đưa, không thực sự. Đó là một trong những ý nghĩa nói bình thường, nó hoàn toàn có thể chỉ cho tới một một object thật hoặc một object mang hoặc trả hoặc một chiếc gì đó không có thật.
Xem thêm: Phụ Bản Kho Băng Giá Có Bao Nhiêu Boss
Vì vậy, Fake là một thuật ngữ bình thường chung, nhưng có thể trỏ mang đến bất cứ điều gì.
4. Ví dụ:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using ConsoleApp.Company;namespace ConsoleApp public interface IExtensionNanager Boolean CheckExtension(string FileName); public class ExtensionManager : IExtensionNanager public bool CheckExtension(string FileName) //Some complex business xúc tích và ngắn gọn might goes here. May be DB operation or file system handling return false; //Stub implementation to lớn bypass actual Extension manager class. public class StubExtensionManager : IExtensionNanager public bool CheckExtension(string FileName) return true; public class FileChecker IExtensionNanager objmanager = null; //Default constructor public FileChecker() objmanager = new ExtensionManager(); //parameterized constructor public FileChecker(IExtensionNanager tmpManager) objmanager = tmpManager; public Boolean CheckFile(String FileName) return objmanager.CheckExtension(FileName); Code này là khôn cùng đơn giản và dễ dàng để hiểu. Chúng ta đã tất cả một class FileChecker đơn giản. Class quản lý FileExtension thực tế không được implement không hề thiếu và do vậy bọn họ bao gồm một phiên phiên bản sơ knhị của class. Chúng ta rất có thể thấy rằng các chức năng CheckExtension đang luôn luôn luôn luôn đúng, Khi họ khái niệm một cách ví dụ.
Dưới đấy là code unit test:
using System;using System.Web.Mvc;using Microsoft.VisualStudio.TestTools.UnitTesting;using MVCApplication.Controllers;using Moq;using ConsoleApp.Company;using ConsoleApp;namespace TestMVC
Vậy một đợt nữa để gia công rõ hơn phát minh ban đầu, Stub được áp dụng nhằm luôn luôn luôn thừa qua unit demo cũng chính vì bọn họ biết mọi gì họ vẫn tiến hành với tại sao? Mục đích của bọn họ là nhằm rất có thể pass qua phần unit kiểm tra này.
Thực hiện tại Moông chồng vào ví dụ
Bây giờ chúng ta sẽ tiến hành với 1 Mock object. Có rất nhiều các phương pháp mocking không giống nhau, mà lại nhằm hiểu rõ hơn về bản chất tôi vẫn triển khai một phương pháp mockig viết tay đơn giản dễ dàng.
Một điểm đặc biệt quan trọng về mock là, bạn có thể áp dụng một đối tượng người dùng mock để bình chọn class thiết yếu trong unit chạy thử.
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using ConsoleApp.Company;namespace ConsoleApp public interface IServiceProvider void extensionService(String fileName); //Mochồng extenison service provider public class MockExtensionService : IServiceProvider public string ErrorMessage = null; public void extensionService(string fileName) if (fileName.Split(".")<1> != "myType") ErrorMessage = "Wrong Type"; //Actual incomplete ExtensionManager functionality public class ExtensionManager : IServiceProvider public void extensionService(string fileName) throw new NotImplementedException(); public class ExtensionAnalyzer public IServiceProvider provider = null; public ExtensionAnalyzer(IServiceProvider tmpProvider) provider = tmpProvider; public void ExtensionCheck(string fileName) provider.extensionService(fileName); Thực hiện tại rất đơn giản, Cửa Hàng chúng tôi đã chỉ việc thực hiện một class Moông xã với class này sẽ nhại lại những tác dụng thực tế. Dưới đấy là code unit demo.
using System;using System.Web.Mvc;using Microsoft.VisualStudio.TestTools.UnitTesting;using MVCApplication.Controllers;using Moq;using ConsoleApp.Company;using ConsoleApp;namespace TestMVC Kết luận
Trong bài viết này, chúng ta vẫn học được số đông có mang về Stub cùng Moông xã vào unit chạy thử. Tôi hy vọng nội dung bài viết này sẽ giúp bạn hiểu rõ hơn về chúng. Chúng ta rất cần phải lựa chọn sử dụng Stub giỏi Moông xã Một trong những tình huống đơn lẻ. Một stub để giúp đỡ chúng ta khi bạn muốn sửa chữa các công dụng thực tiễn, Moông chồng để giúp đỡ Lúc bạn có nhu cầu bắt trước những tính năng thực tiễn.