Mock là gì |Tất tần tật về mock

Chế nhạo

Các bài viết từ dự án mở Từ điển Anh-Việt.

/   mɔk   /

 Tổng quan

Danh từ Mock là gì |Tất tần tật về mock

(cổ xưa, cổ xưa) chế nhạo, chế nhạo, chế nhạo

tạo ra một   mô hình   của someonemock một ai đó, một người nào đó giả

Tính từ Mock là gì |Tất tần tật về mock

Giả, nhái

không có thật   sự khiêm tốn  mô phỏng   chiến trường mô hình trận chiến  mô phỏng   nhungfake nhung

Ngoại động từ

Chế giễu, chế nhạo, chế nhạo
Gọi; khinh thường
Lừa, lừa, lừa
Nhại lại, giả vờ

Để viết nhật ký

(+ at) chế giễu, chế nhạo, chế nhạo

 Chuyên nghành

Dệt may

sự giả mạo

Kỹ thuật chung

đồ giả
mô phỏng
người bắt chước

 Các từ liên quan

Từ đồng nghĩa Mock là gì |Tất tần tật về mock

tính từ

khỉ * giả *, giả, giả, ersatz *, giả, giả, giả, giả, giả, giả, giả *, giả, bắt chước, giả vờ, bắt chước, giả, giả, giả *, lừa đảo, gần như *, giả *, mô phỏng, cái gọi là *, giả mạo, thay thế, không thật, nhân tạo, tổng hợp

động từ

thằng hề, lố bịch, Biếm họa, nói xấu, nhạo báng, khinh thường, hoot, sự xúc phạm, Trò đùa, chế nhạo, đứa trẻ, cười, nhạo báng, cây kim, nhại lại, nhạo báng, Tập hợp, xương sườn *, chế giễu, coi thường, tỏ ra khinh thường, Chế giễu, Chế giễu, Trêu ghẹo, Ngón tay cái, Nhại lại, Ảnh hưởng, con khỉ, giả vờ, giả mạo, giống nhau, Làm, giả mạo, mô phỏng, Đùa, Bắt chước, phỉ báng, kịch câm, gương, Chế giễu, Gửi *, mô phỏng, Bắn *, lừa dối, bác bỏ, kẻ phản bội, thách thức, gian lận , ngạc nhiên, thách thức, đánh lừa, thất vọng, lừa dối *, lừa dối, né tránh, lá bạc, đánh lừa, thất vọng, tung hứng, buông xuôi *, đánh lừa, bán *, can thiệp, chế nhạo, đùa, cười, do thám, tweet, bắt chước, giả tạo, né tránh , chọc phá, sao chép,lừa dối, phớt lờ, nói dối, trò hề, tán tỉnh, bắt chước, chế nhạo, đùa cợt, nhân cách hóa, chế nhạo, do thám, giả vờ, kích thích, trêu chọc

имя существительное

burlesque , caricature , farce , parody , sham , travesty

Từ trái nghĩa Mock là gì |Tất tần tật về mock

adjective

authentic , genuine , real

Xem thêm:  Cond là gì |Tất tần tật về cond
verb

flatter , praise , exalt , tell truth

Từ điển: Thông dụng | Dệt may | Kỹ thuật chung

Đã đăng vào thg 6 28, 2015 3:19 PM 7 phút đọc24.3K211

Tìm hiểu về Stub, Mock và Fake trong unit test

Bài đăng này đã không được cập nhật trong 6 năm

Trong bài viết này, tôi tìm hiểu về ba khái niệm rất quan trọng trong unit test là Stub, Mock và Fake, ý nghĩa khái niệm của chúng là gì và chúng được sử dụng như thế nào trong điều kiện nào. Đầu tiên, chúng ta cần định nghĩa unit test là gì và mô hình TDD là như thế nào. Các bạn có thể tham khảo các khái niệm trên ở link sau: unit-test-voi-phat-trien-phan-mem-hien-dai

Cả ba khái niệm Stub, Mock và Fake đều rất quan trọng trong unit test và gắn liền với định nghĩa về “de-coupled” architecture design. “de-coupling” architecture có mục đích chính là thiết kế phần mềm sao cho chúng ta có thể tách phần mềm ra thành các phần riêng biệt (các unit) mà không bị ảnh hưởng bởi các phần khác hoặc chỉ bị ảnh hưởng một cách tối thiểu.

Ví dụ, tôi có một class cần viết unit test và các class khác liên quan như kết nối DB hoặc call service api. Bây giờ, tôi muốn kiểm tra các class, nơi các đối tượng phụ thuộc là chưa sẵn sàng, vì vậy trong tình huống này, tôi cần phải thực hiện một đối tượng Mock hoặc Fake để kiểm tra class của tôi. Chúng ta sẽ bỏ qua thực tế hoạt động DB hoặc kết quả thực sự của việc call service. Theo cách này chúng ta có thể kiểm tra logic chính của class mà chúng ta cần thực hiện unit test.

1. Mock là gì?

Mock object (MO) là một đối tượng ảo mô phỏng các tính chất và hành vi giống hệt như đối tượng thực được truyền vào bên trong khối mã đang vận hành nhằm kiểm tra tính đúng đắn của các hoạt động bên trong. Mock object có các đặc điểm sau:

  • Đơn giản hơn đối tượng thực nhưng vẫn giữ được sự tương tác với các đối tượng khác.
  • Không lặp lại nội dung đối tượng thực.
  • Cho phép thiết lập các trạng thái riêng trợ giúp cho việc thực hiện unit test.

2. Stub là gì?

Stub là một chương trình hoặc thành phần giả lập (thay thế cho chương trình hoặc thành phần chưa code xong để kiểm thử) nó dùng để kiểm thử… ví dụ, trong một dự án có 4 modules, nhưng đến lúc test mà còn một module chưa code xong, để test được thì cần phải có 4 modules này, vậy thì cần phải có một chương trình giả lập module này để thực hiện test. Chương trình giả lập cho module này được gọi là STUB.

Xem thêm:  Bash là gì |Tất tần tật về bash

Oh, cả hai đều có vẻ khó hiểu!

Khi tôi bắt đầu tìm hiểu về unit test, tôi rất khó để phân biệt được Mock và Stub khác nhau như thế nào, cả hai đều rất giống nhau trong khái niệm. Nhưng một khi bạn hiểu đúng cách rồi thì bạn sẽ nhận ra sự khác biệt thực sự.

Một Stub không thể trả về kết quả unit test là fail bởi vì bạn biết những gì bạn đang thực hiện và lý do tại sao bạn đang thực hiện nó, Nó được sử dụng là để thay thế cho một module và được giả sử là phải thực hiện đúng các nhiệm vụ được giao. Tuy nhiên, Mock object chỉ là một đối tượng mà bắt chước các đối tượng thực sự. Nếu logic chính của method là sai thì các unit test sẽ fail ngay cả khi chúng ta thiết lập mock object chính xác.

3. Fake là gì

Như chúng ta biết, ý nghĩa của Fake là giả, không thật. Đó là một ý nghĩa nói chung, nó có thể chỉ tới một một object thật hoặc một object giả hoặc giả hoặc một cái gì đó không có thật.

Vì vậy, Fake là một thuật ngữ chung chung, mà 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)        {                        return false;        }    }        public class StubExtensionManager : IExtensionNanager    {        public bool CheckExtension(string FileName)        {            return true;        }    }    public class FileChecker    {        IExtensionNanager objmanager = null;                public FileChecker()        {            objmanager = new ExtensionManager();        }                public FileChecker(IExtensionNanager tmpManager)        {            objmanager = tmpManager;        }        public Boolean CheckFile(String FileName)        {            return objmanager.CheckExtension(FileName);        }    }}

Code này là rất đơn giản để hiểu. Chúng ta đã có một class FileChecker đơn giản. Class quản lý FileExtension thực tế không được implement đầy đủ và vì vậy chúng ta có một phiên bản sơ khai của class. Chúng ta có thể thấy rằng các chức năng CheckExtension sẽ luôn luôn đúng, khi chúng ta định nghĩa một cách 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{    [TestClass]    public class UnitTest1    {        [TestMethod]        public void TestMethod1()        {                        StubExtensionManager stub = new StubExtensionManager();            FileChecker checker = new FileChecker(stub);                        bool IsTrueFile = checker.CheckFile("myFile.whatever");                        Assert.AreEqual(true, IsTrueFile);        }    }}

Và code unit test trên sẽ luôn luôn pass bởi vì chúng ta đã sử dụng các chức năng được định nghĩa Stub và nó sẽ làm cho code unit test luôn đúng.

Xem thêm:  Anatomy là gì |Tất tần tật về anatomy

Một lần nữa, để làm rõ ý tưởng ban đầu, phần sơ khai luôn được sử dụng để vượt qua các bài kiểm tra đơn vị vì chúng tôi biết mình đang làm gì và tại sao? Mục tiêu của chúng tôi là vượt qua bài kiểm tra đơn vị này.

Ví dụ về triển khai mô phỏng

Bây giờ chúng ta hãy giải quyết đối tượng Mock. Có nhiều cách khác nhau để chế nhạo, nhưng để hiểu rõ hơn về vấn đề, tôi sẽ làm một mockig viết tay đơn giản.

Điểm quan trọng với mock là chúng ta có thể sử dụng mock object để kiểm tra lớp chính trong bài kiểm tra đơn vị.

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);    }        public class MockExtensionService : IServiceProvider    {        public string ErrorMessage = null;        public void extensionService(string fileName)        {            if (fileName.Split('.')[1] != "myType")            {                ErrorMessage = "Wrong Type";            }        }    }        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);        }    }}

Việc triển khai rất đơn giản, chúng tôi chỉ thực hiện lớp Mock và lớp này sẽ bắt chước chức năng thực tế. Dưới đây là mã cho bài kiểm tra đơn vị.

using System;using System.Web.Mvc;using Microsoft.VisualStudio.TestTools.UnitTesting;using MVCApplication.Controllers;using Moq;using ConsoleApp.Company;using ConsoleApp;namespace TestMVC{    [TestClass]    public class UnitTest1    {        [TestMethod]        public void TestMethod1()        {                        MockExtensionService mockobject = new MockExtensionService();                        ExtensionAnalyzer analyzer = new ExtensionAnalyzer(mockobject);                        analyzer.ExtensionCheck("somefile.someextension");                        Assert.AreEqual(mockobject.ErrorMessage, "Wrong Type");        }    }}

Để kết luận

Trong bài viết này, chúng tôi đã khám phá các khái niệm về Stub và Mock trong kiểm thử đơn vị. Hy vọng bài viết này giúp bạn hiểu rõ hơn về chúng. Chúng ta cần lựa chọn sử dụng sơ khai hay giả lập trong các tình huống cụ thể. Sơ khai sẽ giúp bạn khi bạn muốn thay thế các chức năng hiện có, Mock sẽ giúp bạn khi bạn muốn mô phỏng các chức năng thực.

Đã đăng ký Bản quyền


Video Mock là gì |Tất tần tật về mock

Cảm ơn các bạn đã theo dõi bài viết Mock là gì |Tất tần tật về mock!. 123 DocX hi vọng đã mang đến thông tin hữu ích cho bạn. Xem thêm các bài viết cùng danh mục Hỏi đáp. Nếu thấy hay hãy chia sẻ bài viết này cho nhiều người được biết. 123 DocX chúc bạn ngày vui vẻ

Related Posts