API Testing với Postman (Phần 17) – làm việc với “thời gian”

Làm việc với API đôi khi chúng ta phải giả lập hoặc dùng những data dạng date_time – thời gian. Mà thời gian thì có rất nhiều kiểu: hiện tại, quá khứ, tương lai; chưa kể là với rất nhiều định dạng khác nhau, ví dụ

09/04/1986 | September 4, 1986 | Thursday, September 4, 1986 8:30 PM

Để làm việc với date_time một cách linh hoạt nhất ta cần phải đưa nó về dạng object thay vì text. Với mỗi ngôn ngữ lập trình, date_time đều được cung cấp dưới dạng các library (hoặc package). Trong javascript, đó là Moment.js và Postman cũng sử dụng thư viện này luôn.

I. Cách sử dụng

Bạn có thể viết vào phần pre-request script:

  • Thời gian hiện tại:
const moment = require('moment');

//DD/MM/YYYY - 04/02/2021
console.log(moment().format("DD/MM/YYYY"));

//YYYY/MM/DD - 2021/02/04
console.log(moment().format("YYYY/MM/DD"));

//DD/MM/YYYY HH:mm - 04/02/2021 08:27
console.log(moment().format("DD/MM/YYYY HH:mm"));

//dddd, MMMM Do YYYY, h:mm:ss a - Thursday, February 4th 2021, 8:27:51 am
console.log(moment().format("dddd, MMMM Do YYYY, h:mm:ss a"));
  • Thời gian trong quá khứ:
const moment = require("moment");

now = moment();
console.log(now.format("DD/MM/YYYY HH:mm:ss"));

yesterday = now.subtract(1, "days");
console.log(yesterday.format("DD/MM/YYYY"));

last_1_hour = now.subtract(1, "hours");
console.log(last_1_hour.format("DD/MM/YYYY HH:mm:ss"));

last_2_minutes = now.subtract(2, "minutes");
console.log(last_2_minutes.format("DD/MM/YYYY HH:mm:ss"));

duration_1year_1month_1day_1hour_1minute = moment.duration({
    seconds: 0,
    minutes: 1,
    hours: 1,
    days: 1,
    weeks: 0,
    months: "1",
    years: "1"
});

time_in_the_past = now.subtract(duration_1year_1month_1day_1hour_1minute);
console.log(time_in_the_past.format("DD/MM/YYYY HH:mm:ss"));
  • Thời gian ở tương lai
const moment = require("moment");

now = moment();
console.log(now.format("DD/MM/YYYY HH:mm:ss"));

tomorrow = now.add(1, "days");
console.log(tomorrow.format("DD/MM/YYYY"));

next_1day_1hour = now.add(1, "d").add(1, "h");
console.log(next_1day_1hour.format("DD/MM/YYYY HH:mm:ss"));

duration_1year_1month = moment.duration({
    months: "1",
    years: "1"
});

time_in_the_future = now.add(duration_1year_1month);
console.log(time_in_the_future.format("DD/MM/YYYY HH:mm:ss"));

II. Cách parse thời gian từ String

Mình có scenario sau:

  1. Save thời gian hiện tại vào biến
  2. Sau đó lại lấy biến đó ra + thêm 1 khoảng thời gian nữa (phút, giờ)
//Step 1
const formatter = 'YYYY-MM-DDTHH:mm:ss+00:00';
const moment = require('moment'); 
pm.environment.set('currenttime',moment().format(formatter));

//Step 2: thêm 10 phút
const currenttime = pm.environment.get('currenttime');
console.log(currenttime); //2021-10-26T10:34:12+00:00

const parse = moment(currenttime, formatter);
parse.add(10, 'm');
console.log(parse.format(formatter)); //2021-10-26T10:44:12+00:00

III. Tổng kết

Như các bạn đã thấy ở phía trên, date_time được viết dưới dạng object, cho phép chúng ta tùy biến thoải mái: từ đổi format hiển thị đến cộng, trừ khoảng thời gian. Sẽ còn rất nhiều technique liên quan đến thời gian nữa nhưng mà trong bài mình không thể viết hết được, các bạn có thể đọc ở documentation của trang moment.js.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments