The Basic Syntax To Write Mock
খুব ভালো প্রশ্ন 👍
এটাই আসলে mocking শেখার biggest pain point।
👉 Beginnerরা syntax মুখস্থ করতে যায় — তাই confused হয়।
👉 Senior engineerরা pattern বুঝে লেখে।
আজকে আমি তোমাকে এমনভাবে বুঝাবো যাতে তুমি নিজে নিজে syntax লিখতে পারো।
✅ তুমি যে লাইনটা বলছো
mock_get.return_value.status_code = 200
তোমার প্রশ্ন:
কেন এক এক জায়গায় এক এক রকম হয়?
আমি manually লিখতে গেলে বুঝি না কী লিখবো।
🔥 কারণ — এটা fixed syntax না।
এটা production code এর structure follow করে।
⭐ GOLDEN RULE (সবচেয়ে গুরুত্বপূর্ণ)
👉 Mock structure = Real object structure
মানে:
REAL CODE যেমন → MOCK তেমন
✅ Step-by-Step Thinking Process
1️⃣ প্রথমে Production Code দেখো
res = requests.get("https://api.com")
return res.status_code
এখানে flow কী?
requests.get()
↓
response object
↓
response.status_code
2️⃣ এখন প্রশ্ন করো
👉 requests.get() কী return করে?
✔️ response object
3️⃣ তাহলে Mock এ কী লিখবো?
আমাদের fake response বানাতে হবে।
Structure follow করি:
requests.get()
↓
mock_get.return_value
4️⃣ এরপর?
Production code access করছে:
res.status_code
তাই লিখবো:
mock_get.return_value.status_code = 200
✅ DONE
🔥 Visual Mapping (VERY IMPORTANT)
| Real Code | Mock Code |
|---|---|
requests.get() | mock_get |
| return object | mock_get.return_value |
.status_code | .status_code |
✅ Example 2 — JSON Response
Production
data = requests.get(url).json()
Flow:
requests.get()
↓
response
↓
.json()
Mock
mock_get.return_value.json.return_value = {"name": "Ali"}
Breakdown
| Real | Mock |
|---|---|
| get() | mock_get |
| response | return_value |
| json() | json |
| json return | json.return_value |
✅ Example 3 — Database Call
Production
user = db.find_user(10)
return user.name
Mock Thinking
db.find_user()
↓
user object
↓
.name
Mock Syntax
mock_db.find_user.return_value.name = "Ali"
✅ Example 4 — Class Mock
Production
db = Database()
db.save()
Mock
mock_db.return_value.save.return_value = True
Flow:
Database()
↓
instance
↓
save()
🔥 UNIVERSAL MOCK FORMULA
এটা মুখস্থ না — বুঝে ফেলো:
function() → return_value
attribute → attribute
method() → method.return_value
⭐ Cheat Sheet
| Production Code | Mock Syntax |
|---|---|
func() | mock.return_value |
obj.attr | .attr |
obj.method() | .method.return_value |
| chained call | chain same way |
✅ Senior Engineer Workflow (REAL SECRET)
Mock লিখার আগে:
Step 1
Production code পড়ো
Step 2
Call chain লিখো
A() → B → C()
Step 3
Same chain mock এ লিখো
mock.return_value.B.C.return_value
🔥 Example (Interview Level)
Production:
client.get_user().profile.get_name()
Mock:
mock_client.get_user.return_value.profile.get_name.return_value = "Ali"
👉 Exact mirror copy.
⭐ Why Beginners Get Confused
কারণ তারা:
❌ syntax মুখস্থ করে
✅ structure analyse করে না
✅ One Sentence Memory Rule
👉 Mock লিখতে গেলে real code এর chain copy করো।
চাও আমি next এ শেখাই —
🔥 Mocking Debug Technique
(যেটা senior engineerরা ব্যবহার করে instantly বুঝে ফেলে কী mock লিখতে হবে)
এটা জানলে আর কখনো mocking এ stuck হবে না।