MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách Mocha biết tệp nào cần tải đầu tiên trong bộ thử nghiệm

Không có thứ tự thiết lập mặc định cho cách Mocha tải các tệp thử nghiệm.

Khi Mocha quét thư mục để tìm tệp, nó sử dụng fs.readdirSync . Lệnh gọi này là một trình bao bọc xung quanh readdir (3) , mà bản thân nó không đảm bảo trật tự. Hiện tại, do sai sót khi triển khai đầu ra của fs.readdir fs.readdirSync được sắp xếp trên Linux (và có thể là hệ thống POSIX nói chung) nhưng không phải trên Windows . Hơn nữa, có thể hành vi được sắp xếp trên Linux cuối cùng có thể bị xóa vì tài liệu cho biết fs.readdir chỉ là readdir (3) và sau này không đảm bảo trật tự. Có một lập luận xác đáng để đưa ra rằng hành vi được quan sát thấy trên Linux là một lỗi (xem sự cố mà tôi đã liên kết ở trên).

Lưu ý rằng có một --sort tùy chọn sẽ sắp xếp các tệp sau khi Mocha tìm thấy chúng. Nhưng điều này được tắt theo mặc định.

Hành vi bạn quan sát có thể giải thích được không chỉ bằng lệnh tải mà còn bằng lệnh thực hiện . Đây là những gì sẽ xảy ra:

  1. Mocha tải các tệp thử nghiệm và thực thi chúng. Vì vậy, bất kỳ thứ gì ở cấp cao nhất của tệp của bạn sẽ thực thi ngay lập tức . Điều này có nghĩa là mã trong test_helper.js thực thi ngay lập tức. Mọi cuộc gọi đến description ngay lập tức thực hiện lệnh gọi lại của nó. Tuy nhiên, các cuộc gọi đến ghi lại bài kiểm tra để thực hiện sau. Mocha đang khám phá các thử nghiệm của bạn khi thực hiện việc này nhưng không thực thi họ ngay lập tức.

  2. Khi tất cả các tệp được thực thi, Mocha bắt đầu chạy các bài kiểm tra. Đến lúc này, mã trong test_helper.js đã chạy và thử nghiệm của bạn được hưởng lợi từ kết nối mà nó đã tạo.

Cảnh báo chính Kết nối với cơ sở dữ liệu là một hoạt động không đồng bộ và hiện tại không có gì đảm bảo rằng hoạt động không đồng bộ trong test_helper.js sẽ hoàn thành trước khi các bài kiểm tra bắt đầu. Rằng nó hoạt động tốt ngay bây giờ chỉ là may mắn.

Nếu đây là tôi, tôi sẽ đặt việc tạo kết nối trong một không đồng bộ chung trước cái móc. (A toàn cầu trước hook xuất hiện trong bất kỳ tệp thử nghiệm nào sẽ được thực thi trước bất kỳ thử nghiệm nào, ngay cả các thử nghiệm xuất hiện trong các tệp khác. ) Hoặc tôi sử dụng --delay và gọi run () một cách rõ ràng để khởi động phần mềm sau khi đảm bảo kết nối được thực hiện.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Vị trí của cơ sở dữ liệu mongodb trên mac

  2. Sử dụng thư viện mongodb-stitch trong Angular 4

  3. MongoDB $ tanh

  4. MongoDB - tìm kiếm theo ngày và giờ bằng trình điều khiển C #

  5. Làm cách nào để lấy độ dài của con trỏ từ mongodb bằng python?