【发布时间】:2023-03-30 22:44:01
【问题描述】:
我们目前正在开发一个 ASP.NET MVC 应用程序,它大量使用基于属性的元数据来驱动 JavaScript 的生成。
下面是我们正在编写的方法类型的示例:
function string GetJavascript<T>(string javascriptPresentationFunctionName,
string inputId,
T model)
{
return @"function updateFormInputs(value){
$('#" + inputId + @"_SelectedItemState').val(value);
$('#" + inputId + @"_Presentation').val(value);
}
function clearInputs(){
" + helper.ClearHiddenInputs<T>(model) + @"
updateFormInputs('');
}
function handleJson(json){
clearInputs();
" + helper.UpdateHiddenInputsWithJson<T>("json", model) + @"
updateFormInputs(" + javascriptPresentationFunctionName + @"());
" + model.GetCallBackFunctionForJavascript("json") + @"
}";
}
此方法会生成一些样板,并移交给返回字符串的各种其他方法。然后将整个批次作为字符串返回并写入输出。
我的问题是:
1) 除了使用大字符串块之外,还有更好的方法吗?
我们考虑过使用 StringBuilder 或响应流,但它看起来很“吵”。使用 string.format 开始变得难以理解。
2) 你将如何对这段代码进行单元测试?只是进行字符串比较以查找字符串中的特定输出,这似乎有点业余。
3) 实际测试最终的 JavaScript 输出怎么样?
感谢您的意见!
【问题讨论】:
标签: c# javascript asp.net-mvc unit-testing code-generation