Nodejs thực thi từng dòng một
Sự kiện 'dòng' được phát ra bất cứ khi nào luồng đầu vào nhận được đầu vào cuối dòng (\n, \r hoặc \r\n). Điều này thường xảy ra khi người dùng nhấn Enter hoặc Return Show
Hàm nghe được gọi với một chuỗi chứa một dòng đầu vào nhận được Vì nó là một bộ lắng nghe, bạn không thể kiểm soát cách phát ra sự kiện hàng. pause() sẽ không hoạt động ở đây vì những điều sau
Nếu bạn muốn, có lẽ bạn nên đọc toàn bộ tệp trong một mảng javascript và sử dụng 73 để đi qua từng dòng Mô-đun 4 hỗ trợ tạo các bài kiểm tra JavaScript báo cáo kết quả ở định dạng TAP. Để truy cập nó
Mô-đun này chỉ khả dụng theo sơ đồ 5. Những điều sau đây sẽ không hoạt động
Các bài kiểm tra được tạo thông qua mô-đun 6 bao gồm một chức năng duy nhất được xử lý theo một trong ba cách
Ví dụ sau minh họa cách các bài kiểm tra được viết bằng mô-đun 6Khi tệp thử nghiệm thực thi, TAP được ghi vào đầu ra tiêu chuẩn của Nút. quy trình js. Đầu ra này có thể được giải thích bởi bất kỳ khai thác thử nghiệm nào hiểu định dạng TAP. Nếu bất kỳ thử nghiệm nào không thành công, mã thoát quy trình được đặt thành 02 kiểm tra phụ #Phương pháp 03 của ngữ cảnh thử nghiệm cho phép tạo các phép thử phụ. Phương thức này hoạt động giống hệt với hàm 03 cấp cao nhất. Ví dụ sau minh họa việc tạo một bài kiểm tra cấp cao nhất với hai bài kiểm tra con
Trong ví dụ này, 05 được sử dụng để đảm bảo rằng cả hai phép thử phụ đã hoàn thành. Điều này là cần thiết vì các bài kiểm tra gốc không đợi các bài kiểm tra con của chúng hoàn thành. Bất kỳ bài kiểm tra con nào vẫn còn tồn đọng khi cha mẹ của chúng kết thúc đều bị hủy và được coi là không đạt. Bất kỳ lỗi kiểm tra con nào cũng khiến kiểm tra gốc không thành công Bỏ qua các bài kiểm tra #Có thể bỏ qua các bài kiểm tra riêng lẻ bằng cách chuyển tùy chọn 06 cho bài kiểm tra hoặc bằng cách gọi phương thức 07 của bối cảnh kiểm tra. Cả hai tùy chọn này đều hỗ trợ bao gồm một thông báo được hiển thị trong đầu ra TAP như minh họa trong ví dụ sau Cú pháp import test from 'node:test';const test = require('node:test');08/import test from 'node:test';const test = require('node:test');09#Chạy thử nghiệm cũng có thể được thực hiện bằng cách sử dụng 08 để khai báo một bộ và 09 để khai báo một thử nghiệm. Một bộ được sử dụng để tổ chức và nhóm các bài kiểm tra liên quan lại với nhau. 09 là bí danh của 6, ngoại trừ không có bối cảnh thử nghiệm nào được thông qua, vì việc lồng nhau được thực hiện bằng cách sử dụng các bộ0 08 và 09 được nhập từ mô-đun 4 7test('top level test', async (t) => { await t.test('subtest 1', (t) => { assert.strictEqual(1, 1); }); await t.test('subtest 2', (t) => { assert.strictEqual(2, 2); }); });77 bài kiểm tra#Nếu nút. js được bắt đầu với tùy chọn dòng lệnh 78, có thể bỏ qua tất cả các bài kiểm tra cấp cao nhất ngoại trừ một tập hợp con đã chọn bằng cách chuyển tùy chọn 77 cho các bài kiểm tra sẽ được chạy. Khi một thử nghiệm với bộ tùy chọn 77 được chạy, tất cả các thử nghiệm con cũng được chạy. Phương pháp 21 của ngữ cảnh thử nghiệm có thể được sử dụng để thực hiện hành vi tương tự ở cấp độ thử nghiệm phụ Lọc các bài kiểm tra theo tên #Tùy chọn dòng lệnh 22 chỉ có thể được sử dụng để chạy thử nghiệm có tên khớp với mẫu được cung cấp. Các mẫu tên thử nghiệm được hiểu là biểu thức chính quy JavaScript. Tùy chọn 22 có thể được chỉ định nhiều lần để chạy các bài kiểm tra lồng nhau. Đối với mỗi thử nghiệm được thực thi, bất kỳ móc thử nghiệm tương ứng nào, chẳng hạn như 24, cũng được chạy Đưa ra tệp thử nghiệm sau, bắt đầu Node. js với tùy chọn 25 sẽ khiến trình chạy thử nghiệm thực thi 26, 27 và 28. Nếu 26 không khớp với mẫu tên thử nghiệm, thì các thử nghiệm con của nó sẽ không thực thi, mặc dù khớp với mẫu. Cùng một bộ kiểm tra cũng có thể được thực hiện bằng cách vượt qua 22 nhiều lần (e. g. 21, 22, v.v. )2 Các mẫu tên thử nghiệm cũng có thể được chỉ định bằng cách sử dụng các ký tự biểu thức chính quy. Điều này cho phép sử dụng cờ biểu thức chính quy. Trong ví dụ trước, bắt đầu Node. js với 23 sẽ khớp với 24 và 25 vì mẫu không phân biệt chữ hoa chữ thườngCác mẫu tên thử nghiệm không thay đổi tập hợp các tệp mà trình chạy thử nghiệm thực thi Hoạt động không đồng bộ bên ngoàiKhi chức năng kiểm tra kết thúc thực thi, kết quả TAP được xuất ra nhanh nhất có thể trong khi vẫn duy trì thứ tự của các bài kiểm tra. Tuy nhiên, chức năng thử nghiệm có thể tạo ra hoạt động không đồng bộ tồn tại lâu hơn chính thử nghiệm đó. Người chạy thử nghiệm xử lý loại hoạt động này, nhưng không trì hoãn việc báo cáo kết quả thử nghiệm để phù hợp với nó Trong ví dụ sau, một bài kiểm tra hoàn thành với hai hoạt động 26 vẫn chưa hoàn thành. 26 đầu tiên cố gắng tạo một phép thử phụ mới. Vì bài kiểm tra gốc đã kết thúc và đưa ra kết quả của nó, bài kiểm tra con mới ngay lập tức được đánh dấu là không đạt và được báo cáo ở cấp cao nhất trong đầu ra TAP của tệp 26 thứ hai tạo ra một sự kiện 29. Các sự kiện 29 và 31 bắt nguồn từ một bài kiểm tra đã hoàn thành được mô-đun 6 đánh dấu là không thành công và được báo cáo dưới dạng cảnh báo chẩn đoán ở cấp cao nhất của đầu ra TAP của tệpChế độ xem #nút. trình chạy thử js hỗ trợ chạy ở chế độ đồng hồ bằng cách chuyển cờ 33 2Ở chế độ xem, trình chạy thử nghiệm sẽ theo dõi các thay đổi đối với tệp thử nghiệm và phần phụ thuộc của chúng. Khi phát hiện thay đổi, người chạy thử nghiệm sẽ chạy lại các thử nghiệm bị ảnh hưởng bởi thay đổi. Trình chạy thử nghiệm sẽ tiếp tục chạy cho đến khi quá trình kết thúc Chạy thử nghiệm từ dòng lệnh#nút. trình chạy thử js có thể được gọi từ dòng lệnh bằng cách chuyển cờ 34 3Theo mặc định, Nút. js sẽ tìm kiếm đệ quy thư mục hiện tại để tìm các tệp nguồn JavaScript khớp với một quy ước đặt tên cụ thể. Các tệp phù hợp được thực thi dưới dạng tệp thử nghiệm. Bạn có thể tìm thêm thông tin về quy ước và hành vi đặt tên tệp thử nghiệm dự kiến trong phần mô hình thực thi trình chạy thử Ngoài ra, một hoặc nhiều đường dẫn có thể được cung cấp làm (các) đối số cuối cùng cho Nút. lệnh js, như hình bên dưới 9Trong ví dụ này, người chạy thử nghiệm sẽ thực thi các tệp 35 và 36. Người chạy thử nghiệm cũng sẽ tìm kiếm đệ quy thư mục 37 để thực thi các tệp thử nghiệmMô hình thực thi người chạy thử nghiệm #Khi tìm kiếm các tệp thử nghiệm để thực thi, trình chạy thử nghiệm hoạt động như sau
Mỗi tệp kiểm tra phù hợp được thực thi trong một quy trình con riêng biệt. Nếu quá trình con kết thúc với mã thoát là 0, bài kiểm tra được coi là vượt qua. Nếu không, thử nghiệm được coi là thất bại. Các tệp thử nghiệm phải được thực thi bởi Node. js, nhưng không bắt buộc phải sử dụng mô-đun 4 trong nội bộChế giễu#Mô-đun 4 hỗ trợ mô phỏng trong quá trình thử nghiệm thông qua đối tượng 07 cấp cao nhất. Ví dụ sau tạo một gián điệp trên một hàm cộng hai số với nhau. Gián điệp sau đó được sử dụng để khẳng định rằng chức năng được gọi như mong đợi Chức năng mô phỏng tương tự cũng được hiển thị trên đối tượng 08 của mỗi bài kiểm tra. Ví dụ sau tạo gián điệp trên một phương thức đối tượng bằng cách sử dụng API hiển thị trên 08. Lợi ích của việc mô phỏng thông qua bối cảnh thử nghiệm là trình chạy thử nghiệm sẽ tự động khôi phục tất cả các chức năng được mô phỏng sau khi thử nghiệm kết thúc 5import test from 'test';const test = require('test');10#
0 import test from 'test';const test = require('test');21#Lịch sửPhiên bảnThay đổiv18. 0. 0, v16. 17. 0 Đã thêm vào. v18. 0. 0, v16. 17. 0 v18. 8. 0, v16. 18. 0Thêm tùy chọn 15v18. 7. 0, v16. 17. 0 Thêm tùy chọn 16
Hàm 03 là giá trị được nhập từ mô-đun 6. Mỗi lần gọi hàm này dẫn đến việc tạo một điểm kiểm tra trong đầu ra TAPĐối tượng 08 được truyền cho đối số 26 có thể được sử dụng để thực hiện các hành động liên quan đến bài kiểm tra hiện tại. Các ví dụ bao gồm bỏ qua bài kiểm tra, thêm thông tin chẩn đoán TAP bổ sung hoặc tạo bài kiểm tra phụ 03 trả về một 7 sẽ giải quyết sau khi kiểm tra hoàn tất. Giá trị trả về thường có thể bị loại bỏ đối với các bài kiểm tra cấp cao nhất. Tuy nhiên, giá trị trả về từ các phép thử phụ nên được sử dụng để ngăn không cho phép thử chính hoàn thành trước và hủy phép thử phụ như trong ví dụ sauTùy chọn 16 có thể được sử dụng để đánh trượt bài kiểm tra nếu mất nhiều thời gian hơn 16 mili giây để hoàn thành. Tuy nhiên, nó không phải là một cơ chế đáng tin cậy để hủy bỏ các bài kiểm tra vì một bài kiểm tra đang chạy có thể chặn chuỗi ứng dụng và do đó ngăn chặn việc hủy theo lịch trình import test from 'test';const test = require('test');56#
Hàm 67 được nhập từ mô-đun 4. Mỗi lần gọi hàm này dẫn đến việc tạo một Subtest và một điểm kiểm tra trong đầu ra TAP. Sau khi gọi các hàm 08 cấp cao nhất, tất cả các bộ và kiểm tra cấp cao nhất sẽ thực thi import test from 'test';const test = require('test');70#Viết tắt của bỏ qua một bộ, giống như 71 import test from 'test';const test = require('test');72#Viết tắt để đánh dấu một bộ là 40, giống như 74 import test from 'test';const test = require('test');75#
Hàm 85 là giá trị được nhập từ mô-đun 4. Mỗi lần gọi hàm này dẫn đến việc tạo một điểm kiểm tra trong đầu ra TAPimport test from 'test';const test = require('test');87#Viết tắt của bỏ qua một bài kiểm tra, giống như 88 import test from 'test';const test = require('test');89#Viết tắt để chấm bài kiểm tra là 40, giống như 91 import test from 'test';const test = require('test');92#Đã thêm vào. v18. 8. 0, v16. 18. 0
|