2011-05-28 27 views
29

Có ai có ý tưởng gì nếu điều này là có thể không? Hầu hết các mẫu cho thanh tra nút dường như hướng tới gỡ lỗi một trang web được gọi. Tôi muốn có thể gỡ lỗi các bài kiểm tra nút hoa nhài mặc dù.Gỡ lỗi kiểm tra nút hoa nhài bằng nút thanh tra

Trả lời

9

tôi đã kết thúc viết một chút util gọi là chuyển đổi:

require('tty').setRawMode(true); 
var stdin = process.openStdin(); 

exports.toggle = function(fireThis) 
{ 
    if (process.argv.indexOf("debug")!=-1) 
    { 
     console.log("debug flag found, press any key to start or rerun. Press 'ctrl-c' to cancel out!"); 
     stdin.on('keypress', function (chunk, key) { 
      if (key.name == 'c' && key.ctrl == true) 
      { 
       process.exit(); 
      } 
      fireThis(); 
     }); 
    } 
    else 
    { 
     console.log("Running, press any key to rerun or ctrl-c to exit."); 
     fireThis(); 
     stdin.on('keypress', function (chunk, key) { 
      if (key.name == 'c' && key.ctrl == true) 
      { 
       process.exit(); 
      } 
      fireThis(); 
     }); 



    } 
} 

Bạn có thể thả nó vào kiểm tra đơn vị của bạn như:

var toggle = require('./toggle'); 

toggle.toggle(function(){ 

    var vows = require('vows'), 
    assert = require('assert'); 

    vows.describe('Redis Mass Data Storage').addBatch({ 

.... 

Và sau đó chạy thử nghiệm của bạn như: nút --debug myfile .js debug. Nếu bạn chạy debug toggle sẽ đợi cho đến khi bạn bất cứ điều gì nhưng ctrl-c. Ctrl-c thoát. Bạn cũng có thể chạy lại, đó là tốt đẹp.

w0000t.

3

Dự đoán không suy đoán của tôi là bạn cần vá hoa nhài, tôi tin rằng nó sẽ tạo ra một quy trình nút mới hoặc một cái gì đó khi chạy thử nghiệm và các quy trình mới này sẽ cần phải được gỡ lỗi.

Tôi có một mong muốn tương tự và quản lý để có được expressso làm việc sử dụng Eclipse như một trình gỡ lỗi: http://groups.google.com/group/nodejs/browse_thread/thread/af35b025eb801f43

... nhưng tôi nhận ra: nếu tôi cần phải bước qua mã của tôi để hiểu nó, tôi có lẽ cần phải cấu trúc lại các mã (có thể được kiểm tra nhiều hơn), hoặc phá vỡ các bài kiểm tra của tôi thành các đơn vị nhỏ hơn.

Thử nghiệm của bạn là trình gỡ lỗi.

+0

Rõ ràng là không đúng sự thật. Xem câu trả lời của Ian. –

+0

Tôi cũng tin rằng thanh tra nút không hoạt động với nút nhài vì nút hoa nhài tạo ra các tiến trình con và nút kiểm tra không xử lý điều đó. Tìm kiếm một giải pháp cho gợi ý rằng process.debug_port phải được đặt thành một giá trị duy nhất cho mỗi tiến trình con, nhưng điều đó đòi hỏi phải giả mạo với mã nguồn nút hoa nhài, tôi đoán – xorcus

28

Nói tóm lại, chỉ cần debug nhài-nút:

node --debug-brk node_modules/jasmine-node/lib/jasmine-node/cli.js spec/my_spec.js 

Nếu bạn nhìn vào nguồn gốc của jasmine-node kịch bản, nó chỉ gọi cli.js, và tôi thấy tôi có thể gỡ lỗi kịch bản tốt.

Tôi muốn sử dụng trình kiểm tra nút để gỡ lỗi kiểm tra CoffeeScript. Chỉ cần thêm công tắc --coffee hoạt động tốt, ví dụ:

node --debug-brk node_modules/jasmine-node/lib/jasmine-node/cli.js --coffee spec/my_spec.coffee 
+0

Thực ra, điều này có vẻ hoạt động tốt. Chỉ cần nhấn nút 'Tiếp tục thực thi tập lệnh' sau khi tải trình gỡ lỗi. Điều này sẽ đưa bạn đến điểm dừng đầu tiên. Tôi không chắc tại sao các thử nghiệm đầu tiên của tôi lại thoát ra ngoài. –

+1

Điều quan trọng là KHÔNG chỉ định tùy chọn dòng lệnh --autotest vì nó làm cho các quy trình con đẻ trứng nhài không được gỡ lỗi theo mặc định, mà không có tùy chọn này, nó hoạt động tốt đẹp – xorcus

+1

nếu nó giúp người khác - tôi nghĩ với thanh tra nút cập nhật: 'node-debug /usr/local/lib/node_modules/jasmine-node/lib/jasmine-node/cli.js spec /' –

Các vấn đề liên quan