> For the complete documentation index, see [llms.txt](https://www.saladpuk.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.saladpuk.com/software-testing/tdd101/moq101.md).

# 11.มาเรียนการใช้ Moq กันเถอะ

💬 ในรอบนี้เราจะมาลองใช้ Moq กันดูนะครับว่ามันจะมาช่วยจัดการกับงานส่วนอื่นๆที่เราไม่สนใจยังไง

{% embed url="<https://www.youtube.com/watch?v=NWTfG7XBBRQ&list=PLUjAn8nwWniiL3ToFK8PfmAo8U6IoGAkg&index=13>" %}

{% embed url="<https://www.youtube.com/watch?v=1qMLUvK58Kw&list=PLUjAn8nwWniiL3ToFK8PfmAo8U6IoGAkg&index=14>" %}

{% embed url="<https://www.youtube.com/watch?v=P9Hfn8wWzDQ&list=PLUjAn8nwWniiL3ToFK8PfmAo8U6IoGAkg&index=15>" %}

{% embed url="<https://www.youtube.com/watch?v=YobFf8ih78o&list=PLUjAn8nwWniiL3ToFK8PfmAo8U6IoGAkg&index=16>" %}

## 🎯 สรุปสั้นๆ

### 👨‍🚀 หลักการใช้ mock framework

จริงๆมันไม่เกี่ยวกับ mock framework หรอก แต่มันเป็นหลักในการออกแบบคือ เราควรพยายามหลีกเลี่ยงการที่ class จะต้องไปผูกกันกับ concrete class โดยเราควรให้ class มันรู้จักกันแค่ในมุม abstraction มากกว่า

{% hint style="info" %}
ถ้าอ่านแล้วมึนๆผมขอพูดง่ายๆว่า เราควรเรียกใช้ class อื่นโดยอ้างถึง **interface** แทนที่จะเรียกใช้ class นั้นตรงๆนะครับ\
เช่น จากเดิมเราเก็บ object ของเครื่องคิดเลขเป็นแบบนี้\
Calculator cal;\
เราควรเปลี่ยนมาเป็นแบบนี้\
ICalculator cal; (***ICalculator เป็น interface นะครับ)***
{% endhint %}
