1
我們如何確定被調用的變量函數的名稱?在javascript中使用反射來獲取失敗時測試函數的名稱
我有一個函數作爲測試實用程序函數來設置我的測試用例。根據測試傳遞給測試實用程序函數的參數,某些子函數可能執行也可能不執行。有時候這些子功能會失敗,我需要知道哪一個失敗了,但不知道如何去做。在其他語言中,我會在這裏使用反射。這是一個選擇嗎?
下面是一個抽象的例子就是我們正在做的:
exports.test_util_func = function(params, callback){
//initialize the functions
var a = function(callback){
...
//response might be "{status:400, body: {error: {...} } }"
callback(error, response);
}
var b = function(callback){
...
callback(error, response);
}
//determine what functions to run
var functions_to_run = [];
if(params.a) functions_to_run.push(a);
if(params.b) functions_to_run.push(a);
async.series(functions, function(error, responses){
if(error) throw new Error(error);
for(var i in responses){(function(response){
//verify that we received a 200 success status from the server
//if we didn't, capture the error
if(response.status!==200){
console.log(response.body);
console.log(i);
//HELP NEEDED HERE - how do we capture better than the function iteration so we know what actually failed? Ideally, we would have: "reflective call()
throw new Error(i+": "+JSON.stringify(response.body));
}
})(responses[i]);}
})
}
編輯:可能有東西在這下面的帖子,我們可以使用,但我想一定有更簡單的方法,通過使用__prototype info:Get variable name. javascript "reflection"