这是因为 html 文本输入包含一个字符串,并且该字符串永远不会被解析为 int。
选项1
您可以修复ForgeInspector/assets/src/js/inspector.js。改变:
$('#_run').click(function () {
var module = $('#_module').val();
var method = $('#_method').val();
var params = {};
$('.api_input input').each(function (i, x) {
params[$(x).attr('id')] = $(x).val();
});
$('#_output').prepend('<pre class="alert alert-info">Called "'+module+'.'+method+'" with "'+JSON.stringify(params, null, '')+'"</pre>');
forge.internal.call(module+'.'+method, params, function () {
$('#_output').prepend('<pre class="alert alert-success">Success for "'+module+'.'+method+'" with "'+JSON.stringify(arguments[0], null, '')+'"</pre>');
}, function () {
$('#_output').prepend('<pre class="alert alert-error">Error for "'+module+'.'+method+'" with "'+JSON.stringify(arguments[0], null, '')+'"</pre>');
})
});
至
$('#_run').click(function () {
var module = $('#_module').val();
var method = $('#_method').val();
var paramTypes = modules[module][method];
var params = {};
$('.api_input input').each(function (i, x) {
switch (paramTypes[$(x).attr('id')].type) {
case 'int': params[$(x).attr('id')] = parseInt($(x).val()); break;
case 'long': params[$(x).attr('id')] = parseInt($(x).val()); break;
case 'double': params[$(x).attr('id')] = parseFloat($(x).val()); break;
default: params[$(x).attr('id')] = $(x).val();
}
});
$('#_output').prepend('<pre class="alert alert-info">Called "'+module+'.'+method+'" with "'+JSON.stringify(params, null, '')+'"</pre>');
forge.internal.call(module+'.'+method, params, function () {
$('#_output').prepend('<pre class="alert alert-success">Success for "'+module+'.'+method+'" with "'+JSON.stringify(arguments[0], null, '')+'"</pre>');
}, function () {
$('#_output').prepend('<pre class="alert alert-error">Error for "'+module+'.'+method+'" with "'+JSON.stringify(arguments[0], null, '')+'"</pre>');
})
});
这会将值转换为正确的类型。
选项 2
您还可以编写自动化或交互式测试来测试您的 API 方法。