Mock test là gì

Trong bài viết này, tôi mày mò về bố định nghĩa vô cùng đặc trưng trong unit thử nghiệm là Stub, Moông chồng cùng Nhái, chân thành và ý nghĩa khái niệm của chúng là gì và bọn chúng được áp dụng như thế nào vào điều kiện làm sao. Trước hết, họ nên tư tưởng unit thử nghiệm là gì và mô hình TDD là thế nào. Các chúng ta có thể tìm hiểu thêm các khái niệm trên sống links sau: unit-test-voi-phat-trien-phan-mem-hien-dai

Cả tía tư tưởng Stub, Moông xã và Fake đều rất đặc trưng trong unit demo với nối liền với tư tưởng về "de-coupled" architecture thiết kế. "de-coupling" architecture có mục tiêu chính là xây dựng phần mềm sao để cho chúng ta có thể bóc tách ứng dụng ra thành các phần riêng lẻ (các unit) mà không trở nên ảnh hưởng bởi những phần không giống hoặc chỉ bị ảnh hưởng một giải pháp về tối tgọi.

Bạn đang xem: Mock test là gì

Ví dụ, tôi bao gồm một class phải viết unit thử nghiệm cùng những class không giống liên quan nlỗi liên kết DB hoặc call service api. Bây giờ, tôi muốn khám nghiệm những class, khu vực các đối tượng người sử dụng phụ thuộc vào là không sẵn sàng, vày vậy trong trường hợp này, tôi cần phải thực hiện một đối tượng người sử dụng Moông chồng hoặc Fake nhằm soát sổ class của tôi. Chúng ta sẽ bỏ qua thực tế vận động DB hoặc hiệu quả thực thụ của việc hotline service. Theo bí quyết này bạn cũng có thể kiểm tra lô ghích bao gồm của class nhưng mà chúng ta phải tiến hành unit kiểm tra.

1. Moông chồng là gì?

Moông chồng object (MO) là một đối tượng người sử dụng ảo mô phỏng các tính chất cùng hành động như nhau nhỏng đối tượng người dùng thực được truyền vào phía bên trong khối hận mã đang vận hành nhằm mục đích kiểm soát tính đúng đắn của các vận động phía bên trong. Moông chồng object tất cả các Điểm sáng sau:

Đơn giản hơn đối tượng người tiêu dùng thực cơ mà vẫn duy trì được sự địa chỉ với các đối tượng người tiêu dùng không giống.

Không lặp lại ngôn từ đối tượng người tiêu dùng thực.

Cho phxay cấu hình thiết lập những tinh thần riêng rẽ trợ hỗ trợ cho Việc triển khai unit demo.

2. Stub là gì?

Stub là một trong lịch trình hoặc yếu tắc đưa lập (sửa chữa mang đến lịch trình hoặc nhân tố chưa code hoàn thành nhằm kiểm thử) nó dùng làm kiểm test... ví dụ, vào một dự án công trình có 4 modules, dẫu vậy đến thời điểm demo bên cạnh đó một module không code hoàn thành, nhằm demo được thì cần phải gồm 4 modules này, vậy thì rất cần được bao gồm một công tác giả lập module này để thực hiện demo. Chương thơm trình trả lập đến module này được Hotline là STUB.

Oh, cả nhì đều sở hữu vẻ cực nhọc hiểu!

lúc tôi bước đầu mày mò về unit thử nghiệm, tôi cực kỳ nặng nề để phân minh được Moông xã với Stub không giống nhau ra làm sao, cả hai thường rất giống nhau vào có mang. Nhưng một khi bạn hiểu đúng cách rồi thì bạn sẽ nhận biết sự khác hoàn toàn đích thực.

Một Stub không thể trả về kết quả unit thử nghiệm là fail chính vì chúng ta biết phần đa gì ai đang thực hiện cùng nguyên nhân vì sao nhiều người đang thực hiện nó, Nó được áp dụng là nhằm sửa chữa thay thế cho 1 module với được mang sử là bắt buộc tiến hành đúng những nhiệm vụ được giao. Tuy nhiên, Moông chồng object chỉ là 1 đối tượng người dùng cơ mà bắt chiếc các đối tượng người tiêu dùng thực sự. Nếu súc tích bao gồm của method là không nên thì các unit thử nghiệm đã fail trong cả Khi họ thiết lập cấu hình moông chồng object đúng chuẩn.

3. Fake là gì

Nlỗi chúng ta biết, chân thành và ý nghĩa của Fake là trả, không thật. Đó là 1 trong những ý nghĩa sâu sắc nói tầm thường, nó rất có thể chỉ cho tới một một object thiệt hoặc một object trả hoặc mang hoặc một chiếc gì đấy không có thiệt.

Xem thêm: Hướng Dẫn Cách Tách Nền Trong Corel X7, Hướng Dẫn Tách Nền Trong Corel “Dễ Như Ăn Kẹo”

Vì vậy, Fake là một thuật ngữ tầm thường chung, nhưng hoàn toàn có thể trỏ đế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 might goes here. May be DB operation or tệp tin system handling return false; //Stub implementation khổng lồ 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à hết sức dễ dàng để phát âm. Chúng ta vẫn có một class FileChecker dễ dàng. Class quản lý FileExtension thực tiễn không được implement khá đầy đủ cùng vì vậy chúng ta bao gồm một phiên bạn dạng sơ knhị của class. Chúng ta rất có thể thấy rằng những tác dụng CheckExtension vẫn luôn luôn luôn đúng, Khi họ khái niệm một bí quyết rõ ràng.

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 public class UnitTest1 public void TestMethod1() //Act StubExtensionManager stub = new StubExtensionManager(); FileChecker checker = new FileChecker(stub); //Action bool IsTrueFile = checker.CheckFile("myFile.whatever"); //Assert Assert.AreEqual(true, IsTrueFile); Và code unit chạy thử bên trên vẫn luôn luôn pass cũng chính vì họ đã sử dụng những tính năng được khái niệm Stub cùng nó đang làm cho code unit thử nghiệm luôn luôn đúng.

Vậy một đợt nữa để triển khai rõ rộng ý tưởng phát minh ban sơ, Stub được sử dụng để luôn luôn luôn luôn thừa qua unit test bởi vì chúng ta biết gần như gì bọn họ vẫn thực hiện và trên sao? Mục đích của chúng ta là nhằm rất có thể pass qua phần unit kiểm tra này.

Thực hiện nay Mochồng vào ví dụ

Bây giờ họ vẫn tiến hành với cùng một Mochồng object. Có tương đối nhiều những biện pháp mocking khác biệt, tuy nhiên nhằm nắm rõ hơn về bản chất tôi đã triển khai một cách mockig viết tay đơn giản dễ dàng.

Một điểm đặc biệt về moông chồng là, bạn cũng có thể sử dụng một đối tượng người dùng moông xã nhằm đánh giá class chủ yếu trong unit thử nghiệm.

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); //Mock 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 nay hết sức đơn giản và dễ dàng, công ty chúng tôi đang chỉ việc tiến hành một class Moông chồng với class này sẽ bắt trước các chức năng thực tế. Dưới đó là code unit demo.

Xem thêm: Sau Cấp Độ 50 Nên Làm Gì

using System;using System.Web.Mvc;using Microsoft.VisualStudio.TestTools.UnitTesting;using MVCApplication.Controllers;using Moq;using ConsoleApp.Company;using ConsoleApp;namespace TestMVC public class UnitTest1 public void TestMethod1() //Act MockExtensionService mockobject = new MockExtensionService(); //Inject mochồng object now ExtensionAnalyzer analyzer = new ExtensionAnalyzer(mockobject); //Action analyzer.ExtensionCheck("somefile.someextension"); //Assert Assert.AreEqual(mockobject.ErrorMessage, "Wrong Type");

Kết luận

Trong nội dung bài viết này, chúng ta đã học được đa số tư tưởng về Stub và Moông xã vào unit kiểm tra. Tôi hi vọng nội dung bài viết này để giúp đỡ bạn nắm rõ rộng về bọn chúng. Chúng ta rất cần phải lựa chọn sử dụng Stub hay Mochồng giữa những trường hợp đơn nhất. Một stub để giúp chúng ta Khi bạn có nhu cầu thay thế các công dụng thực tế, Mochồng sẽ giúp đỡ đỡ khi bạn có nhu cầu nhại lại những tính năng thực tế.