Tôi sử dụng Mocha để kiểm tra công cụ JavaScript của mình. Tập tin kiểm tra của tôi chứa 5 bài kiểm tra. Có thể chạy thử nghiệm cụ thể (hoặc bộ thử nghiệm) thay vì tất cả các thử nghiệm trong tệp không?
Tôi sử dụng Mocha để kiểm tra công cụ JavaScript của mình. Tập tin kiểm tra của tôi chứa 5 bài kiểm tra. Có thể chạy thử nghiệm cụ thể (hoặc bộ thử nghiệm) thay vì tất cả các thử nghiệm trong tệp không?
Câu trả lời:
Hãy thử sử dụng tùy chọn của mocha--grep :
-g, --grep <pattern> only run tests matching <pattern>
Bạn có thể sử dụng bất kỳ regex JavaScript hợp lệ nào như <pattern>. Chẳng hạn, nếu chúng ta có test/mytest.js:
it('logs a', function(done) {
console.log('a');
done();
});
it('logs b', function(done) {
console.log('b');
done();
});
Sau đó:
$ mocha -g 'logs a'
Để chạy thử nghiệm duy nhất. Lưu ý rằng điều này greps qua tên của tất cả describe(name, fn)vàit(name, fn) yêu cầu.
Cân nhắc sử dụng các describe()cuộc gọi lồng nhau cho không gian tên để giúp dễ dàng xác định vị trí và chọn các bộ cụ thể.
mocha some/test.js) hoàn toàn không hoạt động. cảm ơn!
logs a bcdmà chứa logs achuỗi con? Regexp ^$không làm việc trên 0.10.2.
Tùy thuộc vào mô hình sử dụng, bạn có thể chỉ muốn sử dụng chỉ . Chúng tôi sử dụng phong cách TDD; nó trông như thế này:
test.only('Date part of valid Partition Key', function (done) {
//...
}
Chỉ kiểm tra này sẽ chạy từ tất cả các tập tin / bộ.
it.only.
it.onlysẽ không làm việc cùng với givencác mocha-TestData . Và thật dễ dàng để quên để loại bỏ nó sau này.
eslint-plugin-mochacó một quy tắc no-exclusive-testssẽ bắt bạn nếu bạn quên loại bỏ .only.
Nếu bạn đang sử dụng npm test(sử dụng tập lệnh pack.json), hãy sử dụng thêm-- để truyền tham số cho mocha
ví dụ npm test -- --grep "my second test"
EDIT : Có vẻ như --grepcó thể hơi cầu kỳ (có thể phụ thuộc vào các đối số khác). Bạn có thể:
Sửa đổi gói.json:
"test:mocha": "mocha --grep \"<DealsList />\" .",
Hoặc sử dụng thay thế --bailmà dường như ít cầu kỳ hơn
npm test -- --bail
--grep có thể hơi cầu kỳ - hãy thử đặt nó ngay sau mocha trong mục nhập tập lệnh npm. Khác npm test -- --baillà hữu ích để bảo lãnh sau thử nghiệm thất bại đầu tiên
--greplưu ngày của tôi! Cảm ơn rất nhiều. Tái bút Tôi đang dùng Windows, đang chạynpm test -- --grep @tag
Trên thực tế, người ta cũng có thể chạy thử nghiệm mocha duy nhất bằng tên tệp (không chỉ bằng „it () - chuỗi grepping) nếu bạn xóa mẫu hình cầu (ví dụ ./test/**/*.spec.js) khỏi mocha.opts, tương ứng tạo một bản sao, không có:
node_modules/.bin/mocha --opts test/mocha.single.opts test/self-test.spec.js
Đây là mocha.single.opts của tôi (nó chỉ khác ở chỗ thiếu dòng toàn cầu đã nói ở trên)
--require ./test/common.js
--compilers js:babel-core/register
--reporter list
--recursive
Bối cảnh: Mặc dù bạn có thể ghi đè các công tắc khác nhau từ opts-File (bắt đầu bằng --), bạn không thể ghi đè toàn cầu . Liên kết đó cũng có một số giải thích.
Gợi ý: nếu node_modules/.bin/mochabạn nhầm lẫn, hãy sử dụng gói mocha cục bộ. Bạn cũng có thể viết mocha, nếu bạn đã cài đặt nó trên toàn cầu.
Và nếu bạn muốn các tiện ích của package.json: Still: xóa toàn **/*cầu -ish khỏi bạn mocha.opts, chèn chúng vào đây, để kiểm tra tất cả, hãy để chúng đi cho thử nghiệm duy nhất:
"test": "mocha ./test/**/*.spec.js",
"test-watch": "mocha -R list -w ./test/**/*.spec.js",
"test-single": "mocha $1",
"test-single-watch": "mocha -R list -w $1",
sử dụng:
> npm run test
tương ứng
> npm run test-single -- test/ES6.self-test.spec.js
(nhớ cái này --!)
Warning: Could not find any test files matching pattern: $1
Hi giải pháp trên không làm việc cho tôi. Một cách khác để chạy thử nghiệm duy nhất là
mocha test/cartcheckout/checkout.js -g 'Test Name Goes here'
Điều này giúp chạy một trường hợp thử nghiệm từ một tệp duy nhất và với tên cụ thể.
-g và bạn sẽ không cần chỉ định tên tệp. Nếu bạn không thể viết một biểu thức đủ chọn lọc, điều đó có nghĩa là bạn không đặt tên cho các bài kiểm tra của mình đúng cách.
npm test <filepath>
ví dụ :
npm test test/api/controllers/test.js
ở đây 'test / api / controls / test.js' là filepath.
Bạn có thể thử "it.only"
it.only('Test one ', () => {
expect(x).to.equal(y);
});
it('Test two ', () => {
expect(x).to.equal(y);
});
trong đó cái đầu tiên sẽ chỉ thực hiện
--forbid-onlytrên máy chủ CI / build. .onlycó xu hướng lẻn vào nhánh chính và khiến các bài kiểm tra khác bị tắt tiếng khi chúng không thực hiện nữa. Tôi đã nghĩ đến quy trình thay đổi mã để chạy các thử nghiệm khác nhau về tính năng chống. Người chạy thử nên xác định thử nghiệm nào sẽ được thực hiện (còn gọi là thử nghiệm được gắn thẻ) không phải là nhà phát triển.
it.onlyrepo
Nhìn vào https://mochajs.org/#usage chúng tôi thấy rằng chỉ cần sử dụng
kiểm tra mocha / myfile
sẽ làm việc. Bạn có thể bỏ qua '.js' ở cuối.
--grepchỉ được lọc từ các@thẻ.