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 bcd
mà chứa logs a
chuỗ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.only
sẽ không làm việc cùng với given
các mocha-TestData . Và thật dễ dàng để quên để loại bỏ nó sau này.
eslint-plugin-mocha
có một quy tắc no-exclusive-tests
sẽ 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ư --grep
có 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ế --bail
mà 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 -- --bail
là hữu ích để bảo lãnh sau thử nghiệm thất bại đầu tiên
--grep
lư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/mocha
bạ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-only
trên máy chủ CI / build. .only
có 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.only
repo
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.
--grep
chỉ được lọc từ các@
thẻ.