Mock serverهای Postman معمولا responseهای ثابت را از saved exampleها برمیگردانند. اگر میخواهید responseها random باشند یا بر اساس request تغییر کنند، میتوانید dynamic mock response بسازید. این روش کمک میکند بدون ساختن یک example جداگانه برای هر حالت، سناریوهای مختلف API را شبیهسازی کنید.
استفاده از variableها در mock server #
میتوانید valueها را در variable ذخیره کنید و در requestها یا responseهای collection به کار ببرید. اگر مقدار variable تغییر کند، همان مقدار جدید در همه جا استفاده میشود. Mock serverها از environment variable و collection variable پشتیبانی میکنند.
- برای environment variable، environment را در configuration mock server انتخاب کنید.
- برای collection variable، آن را در تب Variables همان collection تعریف کنید.
Mock serverها از global variable و vault secret پشتیبانی نمیکنند. وقتی variable در یک example استفاده شود، mock server آن را resolve میکند و با shared value جایگزین میکند. اگر environment variable و collection variable نام یکسان داشته باشند، مقدار environment variable اولویت دارد.
Dynamic variableها #
Dynamic variableها در body example میتوانند داده random تولید کنند. این variableها هنگام ساخت response mock server resolve میشوند و با داده تصادفی از کتابخانه Faker جایگزین میشوند. برای تست exploratory و سناریوهای دادهمحور، این روش بسیار مفید است.
برای نمونه، response body یک example میتواند چنین مقدارهایی داشته باشد:
{
"name": "{{$randomFullName}}",
"userName": "{{$randomUserName}}",
"location": "{{$randomCity}}",
"company": "{{$randomCompanyName}}",
"jobTitle": "{{$randomJobTitle}}",
"updatedAt": "{{$timestamp}}"
}
وقتی endpoint mock server را call کنید، Postman مقدارهای random مشابه این برمیگرداند:
{
"name": "Cielo McClure",
"userName": "Aurelie.Lockman",
"location": "Kubhaven",
"company": "Runolfsdottir, Bernhard and Hodkiewicz",
"jobTitle": "Direct Branding Liaison",
"updatedAt": "1565088856"
}
ساخت response بر اساس request با template helper #
Template یک قالب برای ساخت responseهایی است که با request ورودی تغییر میکنند. Template helperها به داده request ورودی دسترسی میدهند؛ مثل body، query parameterها، path segmentها و headerها.
اگر response matching برای request body فعال است و میخواهید contextual response بسازید، header x-mock-match-request-body را روی false بگذارید؛ وگرنه ممکن است خطای mockRequestNotFoundError بگیرید.
Helperهای اصلی عبارتاند از:
$body: دسترسی به body request ورودی.$queryParams: دسترسی به query parameterها.$pathSegments: دسترسی به بخشهای path، مثل/product/id/details.$headers: دسترسی به headerهای request.
برای دسترسی به مقدارهای خاص میتوانید از syntax کتابخانه object-path استفاده کنید:
{{$body}}: برگرداندن کل request body.{{$body 'path.to.property'}}: برگرداندن یک property خاص از body.{{$headers 'header-key'}}: برگرداندن مقدار یک header خاص.{{$queryParams 'parameter-key'}}: برگرداندن مقدار یک query parameter.{{$pathSegments '1'}}: برگرداندن segment دوم path.{{$body 'property' 'default value'}}: تعریف مقدار پیشفرض.
نمونه contextual response #
در این مثال، template helper مقدار username را از body request میخواند و همان مقدار را در response mock server برمیگرداند.
- در collection mock شده یک request جدید بسازید، در تب Body حالت raw و نوع JSON را انتخاب کنید و این body را وارد کنید:
{
"username": "postman",
"password": "12345"
}
- به request یک example اضافه کنید و body response آن را به این شکل تنظیم کنید:
{
"username": "{{$body 'username' 'postman'}}",
"id": "{{$randomUUID}}"
}

- حالا request را با مقدارهای مختلف
usernameبه mock server بفرستید. Response مقدار username را از body همان request میگیرد.
منبع آموزشی: Postman Docs، بازنویسی و سادهسازیشده برای کاربران فارسیزبان.

