TECHTOGOU

Javascript 单元测试 - DOM 操作

coder 2024-05-16 原文

我对 Javacript 单元测试还很陌生。一件事一直困扰着我。在测试 javascript 时,我们经常需要进行 DOM 操作。看起来我正在对 Controller /组件中的方法/函数进行单元测试,但我仍然需要依赖模板中的 HTML 元素。一旦更改了 id(或在我的测试用例中用作选择器的属性),我的测试用例也需要更改!这不会违反单元测试的目的吗?

最佳答案

javascript 单元测试中最困难的部分之一不是测试,而是学习如何构建代码以使其可测试。

您需要通过明确分离可测试逻辑和 DOM 操作来构建代码。

我的经验法则是:

如果您正在测试任何依赖于 DOM 结构的东西,那么您就错了。

总结:尽量只测试数据操作和逻辑操作。

关于Javascript 单元测试 - DOM 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18852450/

有关Javascript 单元测试 - DOM 操作的更多相关文章

  1. c# - 如何正确使用.NET2.0串口.BaseStream进行异步操作 - 2

    我正在尝试使用.NET2.0SerialPort的.BaseStream属性进行异步读写(BeginWrite/EndWrite、BeginRead/EndRead)。我在这方面取得了一些成功,但一段时间后,我注意到(使用ProcessExplorer)应用程序正在使用的Handles逐渐增加,偶尔还有一个额外的线程,这也增加了Handle计数。每次出现新线程时,上下文切换率也会增加。应用程序不断向PLC设备发送3个字节,并以57600的波特率返回800左右字节。最初的CSwitchDelta(同样来自ProcessExplorer)大约为2500,这看起来非常高。每出现一个新的线程,

  2. c# - 您可以在不需要集成测试的情况下自行测试 razor View 吗? - 2

    我有一个MVC网站,用户必须执行许多不同的步骤才能完成它。有验证检查和定时部分(用于法律要求)。每次我需要测试页面的小改动时都必须进行集成测试,这真是令人头疼。理想情况下,我想知道是否有一种方法(也许是插件?)允许我右键单击一个View,以某种方式指定一个假模型对象并直接打开它?我最终想要测试的是任何新的客户端脚本(结合了razor/javascript/jQuery)在各种浏览器上的外观和工作方式。这与测试我的Controller的功能无关。 最佳答案 设计时数据设计时数据在WPF中很常用,这里有一篇文章描述了一种在MVC中显示设

  3. c# - Visual Studio 2015,Resharper 在调试单元测试时卡住 - 2

    我正在使用VisualStudio2015(Windows10)的社区版,并启用了我的resharper-extension(包括调试选项)。当我开始调试我的c#-Test-classesVisualStudio时卡住,我必须最小化和最大化VS以获得刷新的屏幕(对于每个调试步骤)。当我禁用Resharper的调试选项并使用内置VS调试时,一切正常。我想使用Resharper,因为它更舒适。有谁知道这是否只是我必须设置的一个选项?编辑:VS仅在我调试单元测试时卡住。 最佳答案 不幸的是,这是10.0RTM中的一个显示阻止错误。它正在修

  4. c# - Batchify 长 Linq 操作? - 2

    我问了一个问题并得到了回答here关于我在大量数据集合中遇到的性能问题。(使用linq创建)好吧,让我们把它放在一边。但Marc建议的一项有趣的(巧妙地)优化是Batchifylinq查询。/*1*/staticIEnumerable<T>Batchify<T>(thisIEnumerable<T>source,intcount)/*2*/{/*3*/varlist=newList<T>(count);/*4*/foreach(variteminsource)/*5*/{/*6*/list.Add(item);/*7*/if(list.C

  5. c# - 使用 NUnit 测试 Windows 8 商店应用程序 - 2

    我目前正在为一个类(class)开发Windows应用商店应用程序(Windows8),但我在运行NUnit测试时遇到了问题。我的解决方案/项目设置如下所示:TheMetroApp.slnSQLite-net.csproj-类库(Windows应用商店应用程序)。文件是从NuGet中提取的。DataModel.csproj-类库(Windows应用商店应用程序)UnitTests.csproj-单元测试库(Windows商店应用程序)。NUnit框架是从NuGet中提取的。TheMetroApp.csproj-从WindowsSDK示例之一提取的项目文件。杂项。依赖项和实用程序Wind

  6. c# - 为什么看起来操作没有按照代码的顺序执行? - 2

    这是一些背景。我正在开发类似于“崩溃”的游戏。block在底部填满,当所有12个block都填满后,它们就会向上推到运动场。我有一个名为(intNextSpawn)的计数器,它不仅告诉何时“推高”下一行,还计算图形的向量。当block被推上去时,它重置为0。我在屏幕上添加了一些调试文本来尝试查看发生了什么,但我似乎无法找出问题所在。看起来它似乎仍在增加计数器,同时试图随机化应该出现的block(事情乱序)。我最终得到了“空白”block,它在测试时会导致一些非常棘手的效果。当提高速度时,情况会变得更糟。我愿意发布任何可能有帮助的附加代码。以下是可能发生这种情况的两个主要block。有什

  7. c# - 如何在 Visual Studio 2010 中并行化数据驱动的单元测试? - 2

    我知道常规的MS-Test单元测试可以通过在.testresults文件中指定parallelTestCount属性在多核机器上并行化(当然有警告)测试解决方案。像这样,<ExecutionparallelTestCount="1"><TestTypeSpecific/><AgentRulename="ExecutionAgents"></AgentRule></Execution>MSDN上的更多信息:ExecutingUnitTestsinparallelonamulti-CPU/corem

  8. c# - 单元测试序列化有什么意义吗? - 2

    我有一个类序列化了一组我想进行单元测试的对象(使用XML序列化)。我的问题是感觉我将测试XML序列化的.NET实现,而不是任何有用的东西。我还有一个先有鸡还是先有蛋的小场景,为了测试Reader,我需要Writer生成的文件来执行此操作。我认为我最终要寻求反馈的问题(有3个,但它们都相关)是:是否可以在不使用读取器的情况下测试写入器?测试阅读器的最佳策略是什么(XML文件?模拟记录/回放)?是不是您真正要做的只是测试已反序列化的对象的属性值?测试作者的最佳策略是什么!Xml序列化的背景信息我没有使用架构,因此所有XML元素和属性都与对象的属性相匹配。由于没有架构,与每个对象的属性中发现

  9. c# - 如何使用 moq 框架在 c# 中为私有(private)方法编写单元测试? - 2

    我想使用moq框架在C#中为私有(private)方法编写单元测试,我在StackOverFlow和Google中进行了搜索,但找不到预期的结果。如果可以,请帮助我。 最佳答案 你不能,至少不能使用最小起订量。但更重要的是,您不应该。首先,您测试的不是方法,而是行为。其次,为了测试行为,您可以使用类型的公共(public)API并验证该操作的结果。私有(private)方法是实现细节。您不想验证如何完成事情,您想要验证做的事情是否完成。 关于c#-如何使用moq框架在c#中为私有(pri

  10. c# - DataGridView 更改单元格背景颜色 - 2

    我有以下代码:privatevoiddgvStatus_DataBindingComplete(objectsender,DataGridViewBindingCompleteEventArgse){foreach(DataGridViewRowrowindgvStatus.Rows){row.Cells[color.Index].Style.BackColor=Color.FromArgb(((GesTest.dsEssais.FMstatusAnomalieRow)row.DataBoundItem).iColor);}}我正在尝试从背景颜色列中设置每个单元格的背景颜色。这不起作用

随机推荐

  1. c# - 将所有 child 放到一个列表中 - 递归 C# - 2

    C#|.NET4.5|EntityFramework5我在EntityFramework中有一个类,如下所示:publicclassLocation{publiclongID{get;set;}publiclongParentID{get;set;}publicList<Location>Children{get;set;}}ID是位置的标识符,ParentID将其链接到父位置,而Children包含父位置的所有子位置。我正在寻找一种简单的方法,可能是递归的,将所有“位置”及其子项都放到一个包含Location.ID的列表中。我在递归地概念化这个问题时遇到了麻烦。感谢您的帮

  2. c# - 将 ListView 项目转换到 List<string>? - 2

    我怎么投ListView.Items到List<string>?这是我尝试过的:List<string>list=lvFiles.Items.Cast<string>().ToList();但是我收到了这个错误:Unabletocastobjectoftype'System.Windows.Forms.ListViewItem'totype'System.String'. 最佳答案 ListViewItemCollection顾名思义-ListViewItem元素的

  3. c# - 为 WCF 实现接口(interface)时不能使用可选参数 - 2

    在我的界面中我已经声明了这一点。[OperationContract][WebGet]StringGetStuff(Stringbeep,Stringboop="toolazytotype");我是这样实现的。StringGetStuff(Stringbeep,Stringboop="toolazytotype"){...}它编译并上传为我的WCF服务。但是,当我将它用作Web引用并尝试执行下面的代码时,编译器提示说没有带有单个参数签名的方法。最后一行是问题所在。我怎么能懒得打字默认?ServiceClientclient=newServiceClien

  4. c# - 为什么 DateTime.Now.TimeOfDay.ToString ("HH:mm:ss.ffffff") 抛出 FormatException? - 2

    我在抛出FormatException时遇到了类似的问题。我的代码很简单:voidOrders_OnSubmit(){DateTimeCurrentTime=DateTime.Now;rtbAdd("Submittedon"+CurrentTime.Date.ToString("MM/dd/yyyy")+"at"+CurrentTime.TimeOfDay.ToString("HH:mm:ss.ffffff"));}voidrtbAdd(StringS){DefaultDelegatedel=delegate(){rtb.

  5. c# - 更新条目时出错。有关详细信息,请参阅内部异常 - 2

    很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭9年前。当我删除列表框中的项目时,出现问题中的错误,如下面的屏幕截图所示:我不知道内部异常在哪里,但我尝试了try,catch但我在问题中遇到了同样的错误。这里是所有的代码:namespaceWpfApplication7{///<summary>///InteractionlogicforEdit_Rooms.xaml///</summary>publicpartialclass

  6. c# - stringbuilder 与字符串连接 - 2

    在我的项目中,我正在遍历数据View结果。stringhtml=string.empty;DataViewdV=data.DefaultView;for(inti=0;i<dV.Count;i++){DataRowViewrv=dV[i];html+=rv.Row["X"].Tostring();}dV中的行数将始终为3或4。对于这种情况,使用字符串concat+=opearator还是StringBuilder更好,为什么? 最佳答案 我会在这里使用StringBuilder,因为它描述了您正在做的事情。对于

  7. c# - Visual Studio 找不到我引用的 DLL 的命名空间 - 2

    这是一个非常令人沮丧的问题。突然间我无法使用引用的DLL。我在同一解决方案中添加了对项目的程序集引用,但命名空间无法识别。我什至可以在对象查看器中看到引用。我还在没有客户端配置文件的情况下将项目更改为.NET4和3.5,但无济于事。 最佳答案 基于您的screenshot,您在多个项目中引用了同一个“ServerLibrary”DLL,但是,看起来一个引用版本是在.NET3.5中编译的,而另一个引用版本(它出现的项目引用)是在.NET4中编译的。确保所有项目都指向相同版本的DLL并重新编译所有项目。那应该可以解决您的问题。

  8. c# - 防止类被实例化的最佳方法? - 2

    我需要知道如何防止类在.net中被实例化?我知道很少有方法可以使类成为抽象类和静态类。还有其他方法可以实现吗? 最佳答案 如果您绝对不想要任何实例,则将类设为静态是最好的方法。这会阻止任何人创建实例。该类将是密封的和抽象类,并且没有任何构造函数。此外,该语言会注意到它是一个静态类,并阻止您在各种暗示实例的地方使用它,例如类型参数和变量。这比仅仅拥有一个私有(private)构造函数更清楚地表明了意图——这可能意味着在该类中创建了一些实例(例如,对于单例实现)。哦,让类静态化也会阻止你在类中引入任何无意义的实例成员:)参见MSDN有关

  9. c# - 将十进制小时数转换为 DD :HH:MM - 2

    我正在尝试将小数小时数转换为天数、小时数和分钟数。这是我目前所拥有的,还不完全是。如果有意义的话,我需要从小时部分的天数中减去小时数吗?///<summary>///ConvertsfromadecimalvaluetoDD:HH:MM///</summary>///<paramname="dHours">Thetotalnumberofhours</param>///<returns>DD:HH:MMstring</returns>publicstaticstringConvertFromDeci

  10. c# - 在 C# 中调试 Web 服务代理类 - 2

    在我的项目中,我创建了一个具有网络服务的网络应用程序。在同一解决方案中,我添加了另一个Web应用程序。我正在使用来自该应用程序的Web服务。我使用使用网络引用选项添加网络引用添加了网络引用。我想调试生成的代理类(当我添加Web引用时)。我在代理类中放置了一个调试器,但它不起作用。然后我复制了代理类并在客户端Web应用程序中创建了一个具有相同内容的新类,并删除了Web引用。但我仍然无法调试代理类。我如何调试代理类?请帮忙。 最佳答案 尝试从生成的代码中删除[DebuggerStepThroughAttribute()]