2012-05-25 27 views
142

Mocha cố gắng tìm tệp thử nghiệm theo test theo mặc định, làm cách nào để chỉ định một thư mục khác, ví dụ: server-test?Làm cách nào để chỉ định thư mục kiểm tra cho mocha?

+0

Trong khi không phải 100% câu trả lời cho câu hỏi của bạn, hãy xem http://jaketrent.com/post/run-single-mocha-test/ - Tôi đến đây để tìm cách chạy một bộ thử nghiệm cụ thể và chương trình này bạn có thể sử dụng '.only' và' .skip' để quản lý các thử nghiệm nào bạn đang chạy. Quan trọng trong quá trình phát triển một tính năng cụ thể khi bạn không muốn đợi toàn bộ bộ thử nghiệm chạy mọi lúc. –

Trả lời

65

Dưới đây là một cách, nếu bạn có thư mục con trong thư mục thử nghiệm của mình, ví dụ:

/test 
/test/server-test 
/test/other-test 

Sau đó, trong linux bạn có thể sử dụng lệnh find để liệt kê tất cả * .js file đệ quy và vượt qua nó để mocha:

mocha $(find test -name '*.js') 
+18

hoặc chỉ sử dụng '--recursive' như tôi giải thích dưới đây –

+3

Vì vậy, nói cách khác' mocha' không có tùy chọn để thiết lập cấu trúc thư mục mong muốn trong cấu hình? – Green

+0

người dùng ứng dụng $ mocha $ (tìm các bài kiểm tra -name '* .js') -bash: mocha: không tìm thấy lệnh; Nhận được lỗi này. – lft93ryt

1

Điều này dường như không có hỗ trợ "dễ dàng" nào để thay đổi thư mục kiểm tra.
Tuy nhiên, có thể bạn nên xem this issue, liên quan đến câu hỏi của bạn.

26

Không sử dụng -g hoặc tùy chọn --grep, pattern đó hoạt động trên tên của test bên trong nó(), không phải là hệ thống tập tin. Các tài liệu hiện hành là gây hiểu lầm và/hoặc hoàn toàn sai liên quan đến điều này. Để giới hạn toàn bộ lệnh tới một phần của hệ thống tập tin, bạn có thể truyền một mẫu làm đối số cuối cùng (không phải là một cờ).

Ví dụ, lệnh này sẽ thiết lập phóng của bạn để spec nhưng sẽ chỉ kiểm tra tập tin js ngay bên trong thư mục máy chủ thử nghiệm:

mocha --reporter spec server-test/*.js 

Lệnh này sẽ làm tương tự như trên, cộng với nó sẽ chỉ chạy trường hợp thử nghiệm nơi nó() chuỗi/định nghĩa của một bài kiểm tra bắt đầu với "Fnord:":

mocha --reporter spec --grep "Fnord:" server-test/*.js 
2

tôi đang trên Windows 7 sử dụng v0.10.0 Node.js và mocha v1.8.2 và NPM v1. 2,14. Tôi chỉ cố gắng lấy mocha để sử dụng thử nghiệm/đơn vị đường để tìm các thử nghiệm của tôi, Sau khi chi tiêu lâu dài và thử một số thứ tôi đã hạ cánh,

Sử dụng tùy chọn "test/unit/*. Js" làm việc trên cửa sổ. Vì lý do chính đáng mà cửa sổ trình bao không mở rộng các ký tự đại diện như unixen.

Tuy nhiên, việc sử dụng "test/unit" không hoạt động, không có mẫu tệp. ví dụ: "mocha test/unit" chạy tất cả các tệp được tìm thấy trong thư mục test/unit.

Điều này chỉ chạy một tệp thư mục làm kiểm tra nhưng bạn có thể chuyển nhiều tên thư mục dưới dạng tham số.

Ngoài ra để chạy một tệp thử nghiệm duy nhất, bạn có thể chỉ định đường dẫn đầy đủ và tên tệp. ví dụ: "Thử nghiệm mocha/đơn vị/mytest1.js"

Tôi thực sự thiết lập trong package.json cho NPM "kịch bản": { "test": "thử nghiệm mocha/đơn vị" },

Vì vậy mà ' thử nghiệm npm 'chạy thử nghiệm đơn vị của tôi.

+9

Kể từ hôm nay, người ta có thể sử dụng tùy chọn '--recursive' như sau:' mocha --recursive "some_dir" ' – superjos

+1

Sử dụng' node_modules \ .bin \ mocha "test \ unit \ *. Js" 'hoạt động trên Windows . Ngoài ra 'node_modules \ .bin \ mocha" ** \ *. Js "' hoạt động (trường hợp thực sự của tôi). Nhưng tôi đang tìm cách loại trừ thư mục _node_modules_. (Tôi cũng sử dụng gulpfile.js nhưng đôi khi tôi cần chạy thử nghiệm trực tiếp với mocha) –

210

Sử dụng này:

mocha server-test 

Hoặc nếu bạn có thư mục con sử dụng này:

mocha "server-test/**/*.js" 

Lưu ý việc sử dụng dấu ngoặc kép. Nếu bạn bỏ qua chúng, bạn có thể không chạy thử nghiệm trong thư mục con.

+1

Điều này không hiệu quả đối với tôi. Nếu tôi muốn làm điều đó theo cách này tôi phải làm 'mocha test/server-test' – jonnie

+15

Vấn đề báo giá kép đã cho tôi nhiều lứa tuổi! Cảm ơn vì đã cứu độ tỉnh táo của tôi. Hét ra cho mọi người đọc điều này để trả thêm tiền cho những dấu nháy kép đó. – ctrlplusb

+8

Trong trường hợp của tôi, tôi đã sử dụng 'mocha ./**/*. Test.js' (vì vậy tôi có thể colocate tệp thử nghiệm với tệp mô-đun). Mẫu đã ngừng hoạt động cho tôi khi tôi thêm tệp kiểm tra ở cấp độ khác trong phân cấp tệp so với phần còn lại của bài kiểm tra và chỉ tìm thấy một tệp bóng lẻ và không phải tá tệp khác cùng cấp trong hệ thống phân cấp . Gói trong báo giá cố định nó. – Stoutie

98

Nếu bạn muốn làm điều đó bằng cách vẫn chỉ chạy mocha trên dòng lệnh, nhưng muốn chạy thử nghiệm trong một thư mục ./server-tests thay vì ./test, tạo ra một tập tin tại ./test/mocha.opts chỉ này trong file:

server-tests 

Nếu bạn muốn chạy tất cả mọi thứ trong thư mục đó và thư mục con, đưa điều này vào test/mocha.opts

server-tests 
--recursive 

mocha.opts là những lập luận được thông qua năm qua l lệnh Ine, do đó, làm cho dòng đầu tiên chỉ là thư mục bạn muốn thay đổi các bài kiểm tra quá sẽ chuyển hướng từ ./test/

+6

Đây là tùy chọn có ít ma sát nhất và phải là câu trả lời được chấp nhận IMHO –

+0

Đây là trình tiết kiệm thời gian. –

+0

Tôi đang sử dụng một trong các tấm nồi hơi và nó ở sau dòng, có thể là do cửa sổ, bạn có thể vui lòng kiểm tra once.node ./node_modules/mocha/bin/mocha $ (tìm api -name '* -test.js') --compilers js: babel-core/đăng ký – kobe

9

Tôi đã gặp sự cố này ngay bây giờ và giải quyết nó bằng cách xóa tùy chọn --recursive (mà tôi đã đặt) và sử dụng cùng cấu trúc gợi ý ở trên:

mochify "test/unit/**/*.js"

này chạy tất cả các xét nghiệm trong tất cả các thư mục dưới /test/unit/ đối với tôi trong khi bỏ qua các thư mục khác trong /test/

2

Nếu bạn đang sử dụng nodejs, trong package.json dưới scripts

  1. Đối global (-g) cài đặt của bạn: "test": "mocha server-test" hoặc "test": "mocha server-test/**/*.js" cho các tài liệu phụ
  2. Đối project cài đặt: "test": "node_modules/mocha/bin/mocha server-test" hoặc "test": "node_modules/mocha/bin/mocha server-test/**/*.js" cho các tài liệu phụ

Sau đó chỉ cần chạy thử nghiệm một cách bình thường như npm test

+0

Tôi thấy rằng 'npm run mocha './test/*. spec.js! (~)" 'bỏ qua đối số glob, nhưng' node_modules/.bin/mocha "./test/*. spec.js! (~) "' không. – ironchicken

+0

@ironchicken để chuyển đối số đến từ việc sử dụng "npm run" - như trong 'npm run mocha - yourArgs' – Hamsterrific

0

Như đã đề cập bởi @superjos trong commen ts sử dụng

mocha --recursive "some_dir"

10

Chạy tất cả các file trong test_directory bao gồm cả thư mục con phù hợp với test.js

find ./parent_test_directory -name '*test.js' | xargs mocha -R spec 

hoặc sử dụng --recursive switch

mocha --recursive test_directory/ 
Các vấn đề liên quan