Karma: Chạy một tệp thử nghiệm duy nhất từ ​​dòng lệnh


93

Vì vậy, tôi đã tìm kiếm tất cả điều này, tìm thấy câu trả lời "tương tự" ở đây, nhưng không chính xác những gì tôi muốn.

Ngay bây giờ nếu tôi muốn kiểm tra một tệp duy nhất với karma, tôi cần phải làm gì fit(), fdescribe()trên tệp được đề cập ...

Tuy nhiên, những gì tôi muốn là có thể chỉ gọi karma, với tệp cấu hình và hướng nó đến một tệp cụ thể, vì vậy tôi không cần phải sửa đổi tệp, tức là:

karma run --conf karma.conf.js --file /path/to/specific/test_file.js

có khả năng làm cái này không? Hoặc với bất kỳ người trợ giúp? (sử dụng càu nhàu hay nuốt nước bọt?)


1
Đã thử karma run -- --grep=testDescriptionFilter? Tôi đã thấy điều này được đề xuất trước đây, nhưng tôi không thể xác minh trực tiếp rằng nó hoạt động. (Nếu tôi là về nhà, tôi muốn thử trước khi đưa ra Kể từ khi tôi không thể try- tôi cho ý kiến thay vì trả lời..) :)
bvaughn

1
đó không phải chỉ cho một cụ thể it? Không có khả năng sử dụng nó cho một tập tin?
Gonçalo Vieira

3
Thành thật mà nói, tôi luôn chỉ sửa đổi karma.conf nếu tôi muốn tập trung vào một tệp thử nghiệm duy nhất. Thật dễ dàng để làm điều đó mà tôi chưa bao giờ dành nỗ lực để tìm ra cách nhanh hơn.
bvaughn

1
Bánh mì kẹp xúc xích. Rất vui vì nó đã giúp. Đã đăng. :)
bvaughn

Câu trả lời:


59

Trước tiên, bạn cần khởi động máy chủ karma với

karma start

Sau đó, bạn có thể sử dụng grep để lọc một thử nghiệm cụ thể hoặc mô tả khối:

karma run -- --grep=testDescriptionFilter

12
Câu trả lời này nên nói rằng bạn nên đã karmachạy với karma starttrước khi chạykarma run
etagwerker

4
Tôi thực sự không nghĩ điều đó là cần thiết, vì câu hỏi đặt ra về cách lọc với karma run. Có vẻ như khá rõ ràng rằng người đăng đã biết cách khởi động Karma và chạy tất cả các bài kiểm tra và chỉ đang tìm kiếm cú pháp liên quan đến việc lọc.
bvaughn

2
Tôi có thể làm gì nếu tôi muốn điều này xảy ra theo chương trình? Tức là tôi không biết mô tả của tệp đã thay đổi, nhưng tôi sẽ biết tên tệp của nó.
MPV

2
Giải pháp này dường như không có tác dụng gì với các thử nghiệm Jasmine (hoa nhài - karma). Và karma run --help hoàn toàn không hiển thị --grep dưới dạng tùy chọn lệnh. Tôi đang sử dụng Karma mới nhất (nó cho biết 1.5.0).
Yavin5 ngày

9
điều này không chạy một thử nghiệm duy nhất!
eav

16

Mặc dù --fileskhông còn được hỗ trợ, bạn có thể sử dụng biến env để cung cấp danh sách các tệp:

// karma.conf.js
function getSpecs(specList) {
  if (specList) {
    return specList.split(',')
  } else {
    return ['**/*_spec.js'] // whatever your default glob is
  }
}

module.exports = function(config) {
  config.set({
    //...
    files: ['app.js'].concat(getSpecs(process.env.KARMA_SPECS))
  });
});

Sau đó trong CLI:

$ env KARMA_SPECS="spec1.js,spec2.js" karma start karma.conf.js --single-run

1
Điều này kết thúc làm việc tuyệt vời! Chỉ cần đảm bảo rằng hình cầu mặc định của bạn có tên thư mục ở phía trước, nếu không bạn sẽ gặp lỗi mẫu. Ngoài ra, tôi đã thay đổi các tệp của mình: định nghĩa như thế này: tệp: [] .concat (getSpecs (process.env.KARMA_SPECS)), và điều đó đã hoạt động tốt hơn, bởi vì hàm đã đặt trong mẫu hình cầu ở đó nếu không có biến môi trường bộ. Ồ, và tôi không nghĩ rằng bạn cần "env" ở phía trước lệnh (nó hoạt động đối với tôi mà không cần điều đó). Cảm ơn vì giải pháp này @Yuriy Kharchenko!
Yavin5

6

Tùy chọn này không còn được hỗ trợ trong các phiên bản gần đây của karma:

xem https://github.com/karma-runner/karma/issues/1731#issuecomment-174227054

Mảng tệp có thể được xác định lại bằng CLI như sau:

karma start --files=Array("test/Spec/services/myServiceSpec.js")

hoặc trốn thoát:

karma start --files=Array\(\"test/Spec/services/myServiceSpec.js\"\)

Người giới thiệu


2
cho tôi lỗi này - bash: lỗi cú pháp gần mã thông báo không mong muốn `('
Lakshay

5
vì vậy, khi tôi thử điều này, tôi gặp lỗi sau config.files = config.files.map(createPatternObject).map(createPatternMapper(basePathResolve)):, có thể do thực tế là tôi đang sử dụng requestJS?
Gonçalo Vieira

1
ờm, không phải vì requestJS, vì một số lý do kỳ quặc mà nghiệp chướng không đọc Array ("zzz") như là một JS Array? O_o
Gonçalo Vieira

2
nm, có vẻ như nghiệp chướng không còn hỗ trợ một lập luận --files nữa?
Gonçalo Vieira

23
Cảnh báo cho mọi người đến đây tùy chọn này không còn được hỗ trợ trong nghiệp: github.com/karma-runner/karma/issues/...
dignifiedquire
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.