Cách sử dụng sọc giả

Gần đây, tôi đã thiết lập tích hợp Stripe cho một dự án và tôi muốn đảm bảo trình bao bọc xung quanh SDK Stripe của mình hoạt động tốt

Tôi đang làm những việc như tạo tài khoản được kết nối và liên kết tài khoản và sau này sẽ làm những việc như tạo các khoản phí trực tiếp

Để đảm bảo rằng tất cả đều hoạt động tốt, tôi muốn viết các bài kiểm tra đơn vị

Thông thường, tôi sẽ thử SDK Stripe và yêu cầu nó trả về các phản hồi được mã hóa cứng, tuy nhiên, đó là rất nhiều công việc và Stripe đã có một máy chủ Stripe Mock tuyệt vời

Tôi đã có một số vấn đề khi sử dụng nó tuy nhiên

Đầu tiên, nó được viết bằng Go và cần một phiên bản golang cập nhật hơn gói Ubuntu mặc định có sẵn

Trong Ubuntu 16. 04 [vâng, tôi biết bây giờ nó hơi cũ, nhưng tôi cũng gặp sự cố tương tự trên 20 mới. 04 máy] “phiên bản đi” đã hiển thị v1. 6 nhưng cái này không hỗ trợ slice nên khi chạy lệnh install “go get -u github. com/stripe/stripe-mock” tôi gặp lỗi

src/github. com/sọc/sọc-mock/máy chủ/máy chủ. đi. 478. chưa xác định. loại. Lát cắt

Tôi đã cố cài đặt các phiên bản cập nhật hơn trong kho lưu trữ apt của Ubuntu e. g sudo apt-get cài đặt golang-1. 13 nhưng gặp sự cố với phiên bản cũ vẫn ở đó ngay cả khi đã cố xóa nó. Vì vậy, tôi đã cài đặt một phiên bản mới hơn nhiều [v1. 16] của nó bản thân mình

https. //ý chính. github. com/kublermdk/369d480858103337bcd69e210a65bf45

Bây giờ tôi có thể chạy sọc-mock và chạy máy chủ cục bộ

Tuy nhiên, bây giờ tôi gặp sự cố với Stripe PHP SDK. Nó tiếp tục truy cập Stripe API

Tất nhiên là tôi đang sử dụng thông tin đăng nhập thử nghiệm, tuy nhiên đó rõ ràng không phải là điều tôi muốn.
Tất cả những gì tôi có thể tìm thấy trên mạng là đề xuất sử dụng thứ gì đó như.

 Stripe::$apiBase = "//localhost:" . MOCK_PORT; 

Tuy nhiên, điều đó đã không cắt nó. Có vẻ như họ đã chuyển sang sọcClient kể từ đó và lời khuyên cũ không giúp được gì

Thay vào đó, nếu bạn đang sử dụng ứng dụng khách Stripe, bạn sẽ muốn làm điều gì đó như

https. //ý chính. github. com/kublermdk/ba7d2bca49736eef02f94d6780a2344a

Điểm mấu chốt là bạn cần đặt ứng dụng cuộn tròn với CURLOPT_SSL_VERIFYPEER được đặt tắt và khi tạo Ứng dụng Stripe, bạn cần đặt api_base

phiên bản 2 lót là

\Stripe\ApiRequestor::setHttpClient[ new \Stripe\HttpClient\CurlClient[[CURLOPT_SSL_VERIFYPEER => 0]] ];

$stripe = new \Stripe\StripeClient[[ 'api_base' => '//localhost:12112', 'api_key' => 'sk_test_***************************************************************************************************' ]];

Hy vọng rằng điều đó sẽ tiết kiệm cho một số người khác một số công việc trong tương lai

Thật không may vì không có dữ liệu POST nào được lưu khi tạo tài khoản được kết nối, những thứ như siêu dữ liệu không đến từ máy chủ mô phỏng, nhưng nó đến từ API thực tế, vì vậy, có một số bắt kịp để họ làm. Nhưng nhìn chung, nó sẽ giúp tôi kiểm tra mã của mình dễ dàng hơn

Jest là một trong những khung thử nghiệm phổ biến nhất được sử dụng trong JavaScript. Nó được các nhà phát triển sử dụng để tự động hóa CRUD khỏi bị hỏng. Việc sử dụng các dịch vụ và thư viện của bên thứ ba là một phần phổ biến của các dự án hiện đại. Thật dễ dàng để kiểm tra mã được viết trong dự án của bạn vì bạn có toàn quyền kiểm soát nó. Nhưng thật khó để kiểm soát hành vi của các dịch vụ bên thứ ba và để giải quyết vấn đề này, chúng tôi chế nhạo dịch vụ bên thứ ba

Ngoài ra, như một phương pháp hay nhất trong thử nghiệm, bạn chỉ nên thử nghiệm mã của mình chứ không phải mã được nhập từ những nơi khác. Lý tưởng nhất là các trường hợp kiểm tra được viết bởi nhà cung cấp nên bao gồm phần đó. Mocking chỉ đơn giản là cho phép bạn thay thế việc triển khai thực tế bằng một tập hợp giả/cố định của đầu ra mong muốn. Stripe là một trong những cổng thanh toán quốc tế phổ biến được nhà phát triển sử dụng để thanh toán trực tuyến

Vì vậy, hãy xem cách chúng tôi có thể giả lập API Stripe để kiểm tra API của chúng tôi bằng cách sử dụng Jest

Dưới đây là mã, cho thấy việc triển khai thực tế API Stripe trong chỉ mục. js. Để biết thêm về tích hợp Stripe với Node. js, đọc ở đây

const stripe = require['stripe']['sk_test_...'];router.post['/create_account', async [req, res] => {
try {
const customer = await stripe.customers.create[{
email: req.body.email,
name: `${req.body.firstName} ${req.body.lastName}`,
phone: `${req.body.countryCode} ${req.body.phoneNo}`,
description: 'User Account Created'
}]
res.send[customer]
} catch [err] {
res.status[501].send[err.message]
}
}]

Bây giờ, hãy mô phỏng hoàn toàn mô-đun Stripe bằng cách trả về bộ đầu ra cố định cho mỗi lần triển khai API Stripe

jest.doMock['stripe', [] => {

return jest.fn[[] => [{
customers: {
retrieve: jest.fn[[] => Promise.resolve[{
id: 'cust_123'
}]],
create: jest.fn[[] => Promise.resolve[{
id: 'cust_123',
name: "Jest_User",
currency: "sgd",
description: "Jest User Account created",
}]],
},
coupons: {
create: jest.fn[[] => Promise.resolve[{
id: '7JS8SH'
}]],
},
subscriptions: {
retrieve: jest.fn[[] => Promise.resolve[{
id: 'sub_123',
object: 'subscription',
}]],
del: jest.fn[[] => Promise.resolve[{
id: 'sub_123'
}]],
},
checkout: {
sessions: {
create: jest.fn[[] => Promise.resolve[{
id: '123'
}]],
},
},
}]];
}];

Sau khi giả lập sọc, hãy viết trường hợp thử nghiệm vào chỉ mục. kiểm tra. js và kiểm tra API tạo tài khoản

const request = require['supertest']
const app = require['../../app']
const client = request[app]
const urlPrefix = '/'
let token
describe['Create user profile', [] => {
it['should create user profile', async [] => {
const res = await client.post[`${urlPrefix}/create_account`]
.send[{
email: "testuser@example.com",
phoneNo: "787840255",
firstName: "Test",
lastName: "User",
}]
expect[res.status].toEqual[200]
}]
}]

Khi bạn chạy tệp thử nghiệm ở trên, bạn sẽ nhận được tên của khách hàng là “Jest_User” thay vì “Test User” vì bạn đã giả lập Stripe API

Chủ Đề