HomeĐời SốngMock test là gì

Mock test là gì

00:27, 26/03/2021

Trong bài viết này, tôi mày mò về tía tư tưởng vô cùng quan trọng trong unit chạy thử là Stub, Moông xã và Fake, ý nghĩa sâu sắc tư tưởng của bọn chúng là gì với chúng được áp dụng ra làm sao vào ĐK như thế nào. Trước hết, chúng ta bắt buộc quan niệm unit test là gì với quy mô TDD là ra làm sao. Các bạn có thể tham khảo các có mang bên trên sinh sống link sau: unit-test-voi-phat-trien-phan-mem-hien-dai

Cả cha định nghĩa Stub, Moông xã và Nhái thường rất đặc biệt trong unit demo cùng gắn sát với quan niệm về "de-coupled" architecture kiến thiết. "de-coupling" architecture gồm mục tiêu đó là thiết kế ứng dụng làm sao cho bạn có thể bóc tách phần mềm ra thành những phần đơn lẻ (những unit) nhưng không biến thành ảnh hưởng vì chưng các phần khác hoặc chỉ bị tác động một giải pháp buổi tối tđọc.

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

lấy ví dụ như, tôi bao gồm một class phải viết unit thử nghiệm với những class khác tương quan nhỏng kết nối DB hoặc Điện thoại tư vấn service api. Bây giờ, tôi ước ao khám nghiệm những class, nơi những đối tượng người dùng phụ thuộc là chưa chuẩn bị sẵn sàng, vì chưng vậy vào trường hợp này, tôi rất cần phải thực hiện một đối tượng Mochồng hoặc Fake để chất vấn class của tôi. Chúng ta đã làm lơ thực tiễn chuyển động DB hoặc công dụng thực sự của Việc Call service. Theo bí quyết này bạn có thể kiểm tra lô ghích thiết yếu của class mà lại họ đề nghị tiến hành unit thử nghiệm.

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

Moông chồng object (MO) là 1 đối tượng người tiêu dùng ảo mô bỏng những tính chất cùng hành động tương đồng nhỏng đối tượng thực được truyền vào phía bên trong kăn năn mã vẫn vận hành nhằm kiểm soát tính đúng mực của các chuyển động bên phía trong. Mock object có những điểm sáng sau:

Đơn giản hơn đối tượng thực nhưng mà vẫn giữ lại được sự can dự với những đối tượng người dùng khác.

Không lặp lại ngôn từ đối tượng người sử dụng thực.

Cho phxay tùy chỉnh cấu hình các tinh thần riêng trợ giúp cho Việc tiến hành unit thử nghiệm.

2. Stub là gì?

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

Oh, cả nhị đều phải có vẻ khó khăn hiểu!

lúc tôi ban đầu khám phá về unit test, tôi siêu khó khăn nhằm rõ ràng được Mock cùng Stub không giống nhau thế nào, cả hai đều rất kiểu như nhau trong có mang. Nhưng một khi chúng ta đọc đúng cách dán rồi thì các bạn sẽ phân biệt sự khác hoàn toàn thực sự.

Một Stub cấp thiết trả về kết quả unit chạy thử là fail chính vì bạn biết phần nhiều gì ai đang triển khai với lý do vì sao ai đang tiến hành nó, Nó được áp dụng là để thay thế cho 1 module cùng được đưa sử là yêu cầu tiến hành đúng các trách nhiệm được giao. Tuy nhiên, Moông xã object chỉ là một đối tượng người sử dụng nhưng mà bắt trước các đối tượng người sử dụng đích thực. Nếu súc tích chủ yếu của method là không đúng thì các unit test đang fail trong cả khi chúng ta thiết lập cấu hình mock object đúng mực.

3. Fake là gì

Nlỗi chúng ta biết, ý nghĩa của Nhái là đưa, không quá. Đó là một trong chân thành và ý nghĩa nói chung, nó có thể chỉ cho tới một một object thiệt hoặc một object giả hoặc mang hoặc một cái nào đấy không có thiệt.

Xem thêm: Chuyện Đời Những Người Chuyển Giới Đẹp Nhất Thái Lan, 10 Mỹ Nhân Chuyển Giới Đẹp Nhất Thái Lan

Vì vậy, Nhái là một trong những thuật ngữ tầm thường phổ biến, nhưng rất 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 lô ghích might goes here. May be DB operation or file 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à siêu đơn giản để gọi. Chúng ta vẫn tất cả một class FileChecker đơn giản và dễ dàng. Class thống trị FileExtension thực tiễn không được implement không thiếu thốn với vì chưng vậy bọn họ có một phiên phiên bản sơ khai của class. Chúng ta rất có thể thấy rằng những công dụng CheckExtension đang luôn luôn luôn luôn đúng, khi họ tư tưởng một giải pháp 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 public class UnitTest1 public void TestMethod1() //Act StubExtensionManager stub = new StubExtensionManager(); FileChecker checker = new FileChecker(stub); //kích hoạt bool IsTrueFile = checker.CheckFile("myFile.whatever"); //Assert Assert.AreEqual(true, IsTrueFile); Và code unit thử nghiệm trên đã luôn luôn luôn luôn pass chính vì họ đã áp dụng những tác dụng được quan niệm Stub cùng nó đang tạo nên code unit test luôn luôn đúng.

Vậy một lần nữa để làm rõ rộng ý tưởng phát minh ban sơ, Stub được thực hiện để luôn luôn luôn thừa qua unit kiểm tra cũng chính vì bọn họ biết các gì bọn họ đã triển khai cùng tại sao? Mục đích của bọn họ là để hoàn toàn có thể pass qua phần unit kiểm tra này.

Thực hiện nay Mock vào ví dụ

Bây giờ đồng hồ chúng ta đang triển khai với một Moông xã object. Có không ít những cách mocking khác biệt, nhưng mà nhằm nắm rõ hơn về thực chất tôi đang thực hiện một bí quyết mockig viết tay dễ dàng và đơn giản.

Một điểm quan trọng đặc biệt về mochồng là, chúng ta cũng có thể thực hiện một đối tượng người tiêu dùng moông chồng nhằm khám nghiệm class bao gồm trong unit demo.

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); //Moông xã 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 cực kỳ đơn giản và dễ dàng, Shop chúng tôi sẽ chỉ việc tiến hành một class Moông xã và class đó sẽ nhại lại các chức năng thực tế. Dưới đấy là code unit kiểm tra.

Xem thêm: Mỗi Ngày Học Tiếng Anh Là Một Niềm Vui Mỗi Ngày Tiếng Anh Là 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 moông chồ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 bài viết này, bọn họ vẫn học được phần đa định nghĩa về Stub cùng Mock trong unit demo. Tôi hi vọng bài viết này để giúp bạn nắm rõ rộng về chúng. Chúng ta cần được chọn áp dụng Stub giỏi Mochồng trong số những trường hợp riêng lẻ. Một stub để giúp đỡ bạn Lúc bạn muốn sửa chữa các công dụng thực tiễn, Moông xã sẽ giúp đỡ đỡ khi bạn muốn bắt trước các tác dụng thực tiễn.


Chuyên mục: Đời Sống