c# - 为什么 System.Web.UI.WebControls.Panel 的 Panel 在使用 C# 的单元测试中返回 null?
问题描述
我有一个名称的设计器类,ExpenseReceipts.aspx.designer.cs
其中部分类 ExpenseReciepts 包含
public partial class ExpenseReceipts {
protected global::System.Web.UI.WebControls.Panel ResultPanel;
}
我在使用 this 的模块中有另一个类 ExpenseReceipts.aspx.cs ResultPanel
。
public partial class ExpenseReceipts : LayoutsPageBase
{
public void HandleRecordsNotFound()
{
ResultPanel.Visible = false;
NoItemsMessage.Text = "No Items Found!!!";
NoItemsMessage.ForeColor = System.Drawing.Color.Red;
NoItemsPanel.Visible = true;
}
}
就生产代码而言,这可以正常工作,但是当我尝试为其编写单元测试时会出现问题。我有以下方法试图在这里填充所有内容。
[TestMethod]
public void HandleRecordsNotFound_ShouldMakeNoResultPanelVisible()
{
using (ShimsContext.Create())
{
bool flag = false;
ShimControl.AllInstances.VisibleSetBoolean = (PANEL, BOOLEAN) => { };
ShimLabel.AllInstances.TextSetString = (LABEL, TEXT) => { };
ShimWebControl.AllInstances.ForeColorSetColor = (WEBCONTROL, FORECOLOR) => { };
ShimControl.AllInstances.VisibleSetBoolean = (CONTROL, BOOLEAN) => { flag = true; };
ExpenseReceipts expenseReceipts = new ExpenseReceipts();
expenseReceipts.HandleRecordsNotFound();
Assert.IsTrue(flag);
}
}
它失败是因为 HandleRecordsNotFound 中抛出的异常说NUll pointer exception
指示 - ResultPanel
为空。
请帮我解决这个问题。提前致谢。PS:我正在使用 Sharepoint 2019。
解决方案
我遵循的 Shimming 方法是错误的。这不是为 UI 控件编写测试的正确方法。
这是我所做的:
public void HidePanelControl_ShouldSetVisibleToFalse() {
Panel panel = new Panel();
JEUploadWorkflowLinkWPUserControl
userControl = new JEUploadWorkflowLinkWPUserControl();
userControl.HidePanelControl(panel);
Assert.IsFalse(panel.Visible);
}
推荐阅读
- excel - Power Query - 根据前一行更新列
- python - 无法读取 Raspberry Pi UART 引脚
- excel - 创建一个 VBA 程序,将执行两个十六进制数的加法或减法
- typescript - 如何在强制执行值时将对象的键提取到类型?
- swift - 限制 UITextVIew 中允许的字符数量时出现 Xcode 错误
- arrays - 遍历数组时无法输入If语句
- sql - 从 SQL Server 中的 JSON 文本中提取值
- c - 关于 C 中整数和浮点运算的新手问题
- python - UpdateView 中的查询集不匹配
- powershell - Powershell HTTP Post Form-数据上传文件