2016-06-20 89 views
0

這裏的NodeJS拋出異常的是我的功能如何測試採用摩卡

var EngineAction = function (hostUrl) { 
    this.parseInput = function (vinNumber, action) { 
     var requestedAction = '' 
     if (action === 'START') { 
     requestedAction = 'START_VEHICLE'; 
     } else if (action === 'STOP') { 
     requestedAction = 'STOP_VEHICLE'; 
     } else { 
     throw new Error("input action is not valid"); 
     } 
     return { id: vinNumber, "action" : requestedAction }; 
    } 

    } 
} 

下面是摩卡測試:

it('throw error, input for engineAction', function(done) {  
    var gm = new GM(); 
    expect(gm.engineAction.parseInput("123", "STATR")).to.throw(Error); 
    gm.engineAction.parseInput("123", "STATR")).to.throw(Error); 
    done(); 
}); 

我已經嘗試了多種方法,但測試失敗與消息

1) GM model test throw error, input for engineAction: 
Error: input action is not valid 
    at parseInput (models/gm.js:87:15) 
    at Context.<anonymous> (test/gm.js:59:25) 

這顯示方法拋出錯誤,但測試沒有斷言。我錯過了什麼?

回答

1

您需要通過函數參考expect

因爲你要調用帶有參數的方法,你需要創建一個partial function,預先綁定的參數:

expect(gm.engineAction.parseInput.bind(gm, "123", "STATR")).to.throw(Error); 

(這使用gmthis變量的方法,它可或者可能不適合)

另外,也可以使用其他功能包裝你的方法:

var testFunc = function() { 
    gm.engineAction.parseInput("123", "STATR")) 
}; 
expect(testFunc).to.throw(Error); 
+0

感謝它的工作。 – harshit