0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Hướng dẫn Chi tiết về Xử lý Tải lên và Tải xuống File trong Cypress

Đăng vào 5 ngày trước

• 5 phút đọc

Chủ đề:

cypress

Giới thiệu về Xử lý Tải lên và Tải xuống File trong Cypress

Tải lên và tải xuống file là những thao tác quan trọng trong kiểm thử end-to-end, đặc biệt trong các ứng dụng web phức tạp. Trong bài viết này, chúng ta sẽ tìm hiểu cách thực hiện những thao tác này với Cypress, mặc dù framework này không có hỗ trợ tích hợp cho các chức năng này. Tuy nhiên, bạn hoàn toàn có thể thực hiện bằng cách sử dụng các thư viện và lệnh mạnh mẽ từ Cypress.

Nội dung bài viết sẽ giúp bạn nắm được các kỹ năng sau:

  • Cách tải lên file bằng Cypress.
  • Xác thực việc tải lên file thành công.
  • Cách tải xuống file và kiểm tra nội dung của nó trong Cypress.

Các yêu cầu cần thiết

Trước khi bắt đầu, bạn cần đảm bảo rằng bạn đã cài đặt và cấu hình Cypress. Phiên bản tối thiểu được khuyến nghị là Cypress v13.6.2 để tương thích với các kỹ thuật được trình bày trong bài viết này.

Hướng dẫn Tải lên File trong Cypress

Bước 1: Cài đặt Plugin Tải lên File

Để thực hiện tải lên file trong Cypress, bạn cần cài đặt gói cypress-file-upload bằng lệnh sau:

Copy
npm install --save-dev cypress-file-upload

Tiếp theo, bạn cần import plugin vào file commands.js trong thư mục support của Cypress:

Copy
import 'cypress-file-upload';

Bước 2: Cấu trúc Thư mục

Để thuận tiện cho việc kiểm thử, hãy đảm bảo rằng dự án của bạn có cấu trúc thư mục như sau:

Copy
cypress/
    fixtures/
        exampleFile.pdf  // Tập tin kiểm thử để tải lên
    e2e/
        fileUploadTests.cy.js  // File kiểm thử để tải lên và xác thực

Bước 3: Thực hiện Tải lên File

Sau khi đã cài đặt plugin, bạn có thể sử dụng lệnh attachFile để tải lên file từ thư mục fixtures. Dưới đây là ví dụ về cách thực hiện:

Copy
describe('Kiểm thử Tải lên File trong Cypress', () => {
  it('phải tải lên file thành công', () => {
    // Truy cập trang có input tải lên file
    cy.visit('/upload');

    // Chọn phần tử input file và tải lên file
    cy.get('input[type="file"]').attachFile('exampleFile.pdf');

    // Xác thực rằng file đã được tải lên thành công
    cy.get('.file-name').should('contain', 'exampleFile.pdf');
  });
});

Trong đoạn kiểm thử này:

  • Chúng ta truy cập trang chứa input tải lên file.
  • Sử dụng attachFile() để tải lên file từ thư mục fixtures.
  • Đảm bảo tên file đã được tải lên hiển thị trên trang kết quả.

Xác thực Việc Tải lên File

Việc xác thực file đã tải lên có thể đơn giản bằng cách kiểm tra xem tên file có hiển thị đúng trên trang hay không. Đối với các trường hợp phức tạp hơn (như kiểm tra nội dung hoặc kích thước file), dễ dàng hơn nếu bạn kiểm tra từ phía máy chủ hoặc sử dụng stubs.

Ví dụ: Xác thực Metadata File

Copy
describe('Kiểm thử Tải lên File và Xác thực Metadata', () => {
  it('cần tải lên file và xác thực metadata', () => {
    cy.visit('/upload');

    cy.get('input[type="file"]').attachFile('exampleFile.pdf');

    // Xác thực rằng metadata như kích thước được hiển thị đúng
    cy.get('.file-size').should('contain', 'Size: 1MB');
  });
});

Tải xuống File trong Cypress

Cypress không hỗ trợ kiểm tra việc tải xuống file vì trình duyệt thực hiện thao tác này ngoài quyền kiểm soát của nó. Tuy nhiên, bạn có thể giải quyết bằng cách kiểm tra file đã tải xuống trong hệ thống file cục bộ của bạn.

Bước 1: Cài đặt Plugin Tải xuống File

Sử dụng plugin cypress-downloadfile để xác thực việc tải xuống file:

Copy
npm install --save-dev cypress-downloadfile

Sau đó, thêm plugin vào file commands.js của bạn:

Copy
require('cypress-downloadfile/lib/downloadFileCommand');

Bước 2: Thực hiện Tải xuống File

Viết một bài kiểm thử tải xuống file và xác minh nội dung của nó:

Copy
describe('Kiểm thử Tải xuống File trong Cypress', () => {
  it('phải tải xuống file và xác minh nội dung của nó', () => {
    cy.visit('/download');

    // Tải xuống file và lưu vào thư mục tải xuống
    cy.downloadFile('https://example.com/sample.pdf', 'cypress/downloads', 'sample.pdf');

    // Xác thực rằng file tồn tại trong thư mục đã chỉ định
    cy.readFile('cypress/downloads/sample.pdf').should('exist');
  });
});

Trong đoạn kiểm thử trên:

  • Sử dụng cy.downloadFile() để tải xuống file từ URL và lưu vào thư mục cypress/downloads.
  • Xác nhận rằng file tồn tại bằng cách sử dụng cy.readFile().

Bước 3: Xác thực Nội dung File

Nếu bạn muốn xác thực nội dung của file đã tải xuống, bạn có thể sử dụng cy.readFile() để kiểm tra nội dung.

Copy
describe('Xác thực Nội dung của File Tải xuống', () => {
  it('phải tải xuống và kiểm tra nội dung của file văn bản', () => {
    cy.visit('/download');

    // Tải xuống file văn bản
    cy.downloadFile('https://example.com/sample.txt', 'cypress/downloads', 'sample.txt');

    // Đọc file và xác thực nội dung
    cy.readFile('cypress/downloads/sample.txt').then((fileContent) => {
      expect(fileContent).to.contain('Đây là một file văn bản mẫu');
    });
  });
});

Các Thực Hành Tốt nhất cho Tải lên và Tải xuống File trong Cypress

  • Sử dụng Fixtures để Tải lên: Lưu trữ các file kiểm thử trong thư mục fixtures để tổ chức và dễ truy cập.
  • Dọn dẹp Thư mục Tải xuống: Trước khi chạy các bài kiểm thử mới, hãy dọn dẹp thư mục tải xuống để tránh xung đột với các file còn sót lại từ lần chạy trước.
  • Xác minh Phản hồi từ Máy chủ: Đối với tải lên file, luôn kiểm tra phản hồi từ máy chủ để đảm bảo file được xử lý đúng.
  • Sử dụng Thư mục Tạm thời cho Tải xuống: Lưu các file tải xuống trong thư mục tạm (như cypress/downloads) để cấu trúc dự án sạch sẽ.
  • Mock việc Tải File lên (Tùy chọn): Nếu bạn cần hiệu suất cao hơn, hãy sử dụng stubs để tránh việc tải file lên thực tế.

Kết luận

Việc tải lên và tải xuống file là những thao tác quan trọng trong kiểm thử ứng dụng web. Mặc dù Cypress không có hỗ trợ tích hợp cho các thao tác này, các plugin như cypress-file-uploadcypress-downloadfile cung cấp những giải pháp dễ sử dụng. Trong bài viết này, bạn đã học được cách:

  • Tải lên file bằng plugin cypress-file-upload.
  • Xác thực bộ upload file thông qua tên và metadata.
  • Tải xuống file với plugin cypress-downloadfile và xác thực sự tồn tại cùng nội dung.

Với những công cụ và kỹ thuật này, bạn sẽ tự tin hơn khi thực hiện kiểm thử các thao tác tải lên và tải xuống file trong các thử nghiệm end-to-end của Cypress!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào