Trong bài viết này, tôi khám phá về ba định nghĩa khôn xiết đặc biệt quan trọng vào unit thử nghiệm là Stub, Moông chồng và Nhái, chân thành và ý nghĩa tư tưởng của chúng là gì và chúng được áp dụng ra sao vào ĐK làm sao. Đầu tiên, chúng ta cần tư tưởng unit chạy thử là gì với mô hình TDD là thế nào. Các bạn có thể tìm hiểu thêm những có mang trên sinh hoạt links sau: unit-test-voi-phat-trien-phan-mem-hien-dai

Cả cha có mang Stub, Mock cùng Fake thường rất đặc biệt quan trọng trong unit demo với nối sát cùng với có mang về "de-coupled" architecture kiến thiết. "de-coupling" architecture tất cả mục đích đó là kiến tạo phần mềm thế nào cho chúng ta có thể bóc tách ứng dụng ra thành những phần riêng biệt (các unit) nhưng không xẩy ra tác động vị các phần khác hoặc chỉ bị tác động một phương pháp tối thiểu.

Bạn đang xem: Stub là gì

ví dụ như, tôi gồm một class phải viết unit thử nghiệm và các class khác liên quan nlỗi liên kết DB hoặc hotline service api. Bây giờ đồng hồ, tôi mong mỏi chất vấn những class, nơi các đối tượng phụ thuộc vào là không chuẩn bị sẵn sàng, bởi vì vậy trong trường hợp này, tôi rất cần phải triển khai một đối tượng người dùng Mock hoặc Nhái để kiểm tra class của mình. Chúng ta vẫn bỏ qua thực tế chuyển động DB hoặc công dụng thực thụ của việc hotline service. Theo giải pháp này chúng ta có thể kiểm soát xúc tích bao gồm của class mà chúng ta cần tiến hành unit chạy thử.

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

Mock object (MO) là 1 trong những đối tượng ảo tế bào phỏng những đặc thù cùng hành động đồng nhất như đối tượng người tiêu dùng thực được truyền vào phía bên trong khối mã đang quản lý và vận hành nhằm khám nghiệm tính chính xác của những hoạt động bên phía trong. Mock object bao gồm các Đặc điểm sau:

Đơn giản rộng đối tượng người sử dụng thực cơ mà vẫn duy trì được sự ảnh hưởng với những đối tượng người dùng không giống.

Không tái diễn câu chữ đối tượng người dùng thực.

Cho phxay tùy chỉnh các tâm trạng riêng rẽ trợ giúp cho câu hỏi thực hiện unit test.

2. Stub là gì?

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

Oh, cả nhị đều sở hữu vẻ nặng nề hiểu!

khi tôi bắt đầu mày mò về unit thử nghiệm, tôi cực kỳ cực nhọc để rõ ràng được Mochồng với Stub không giống nhau ra sao, cả hai đều rất như là nhau trong khái niệm. Nhưng một khi chúng ta hiểu đúng chuẩn rồi thì các bạn sẽ nhận thấy sự biệt lập thực sự.

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

3. Nhái là gì

Như bọn họ biết, ý nghĩa sâu sắc của Nhái là giả, không thật. Đó là một trong chân thành và ý nghĩa nói phổ biến, nó có thể chỉ cho tới một một object thiệt hoặc một object đưa hoặc mang hoặc một chiếc nào đấy không tồn tại thiệt.

Xem thêm: Si Giáng Là Ai - Tiểu Sử Nhạc Sĩ Giáng Son

Vì vậy, Fake là 1 thuật ngữ chung bình thường, cơ mà 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 ngắn gọn xúc tí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à rất đơn giản dễ dàng nhằm đọc. Chúng ta vẫn bao gồm một class FileChecker đơn giản và dễ dàng. Class quản lý FileExtension thực tế ko được implement rất đầy đủ với vị vậy bọn họ bao gồm một phiên phiên bản sơ knhị của class. Chúng ta có thể thấy rằng các công dụng CheckExtension đã luôn luôn luôn luôn đúng, khi chúng ta định nghĩa một bí quyết ví dụ.

Dưới đó 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 chạy thử bên trên đã luôn luôn pass bởi vì chúng ta vẫn áp dụng những công dụng được quan niệm Stub và nó đang khiến cho code unit chạy thử luôn đúng.

Vậy một lần tiếp nữa để gia công rõ hơn ý tưởng thuở đầu, Stub được áp dụng nhằm luôn luôn vượt qua unit thử nghiệm cũng chính vì họ biết gần như gì bọn họ vẫn triển khai và trên 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 tại Mochồng trong ví dụ

Bây giờ chúng ta vẫn thực hiện với một Mock object. Có không ít các bí quyết mocking không giống nhau, nhưng lại để làm rõ hơn về bản chất tôi đã tiến hành một bí quyết mockig viết tay dễ dàng và đơn giản.

Một điểm đặc biệt về moông xã là, chúng ta cũng có thể áp dụng một đối tượng người tiêu dùng moông xã để đánh giá class chính 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); //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 dễ dàng và đơn giản, công ty chúng tôi vẫn chỉ cần triển khai một class Mochồng cùng class này sẽ nhại lại các tính năng thực tế. Dưới đây là code unit kiểm tra.

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 xã object now ExtensionAnalyzer analyzer = new ExtensionAnalyzer(mockobject); //Action analyzer.ExtensionCheck("sometệp tin.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 vẫn học được phần đông khái niệm về Stub cùng Moông xã trong unit test. Tôi hi vọng bài viết này để giúp chúng ta làm rõ rộng về chúng. Chúng ta cần phải chọn áp dụng Stub hay Moông chồng trong những tình huống cá biệt. Một stub sẽ giúp đỡ các bạn lúc bạn muốn thay thế những tính năng thực tế, Mochồng để giúp đỡ khi bạn có nhu cầu bắt chiếc những tác dụng thực tế.

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *