如何对 jquery 插件中的私有方法进行单元测试?

how to unit-test private methods in jquery plugins?(如何对 jquery 插件中的私有方法进行单元测试?)
本文介绍了如何对 jquery 插件中的私有方法进行单元测试?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

也许这是一个 JQuery 新手问题,但是:

Perhaps this is a bit of a novice JQuery question but:

  • 适当的 jquery 插件写在闭包内
  • 因此只有定义插件接口的方法可以从外部访问
  • 有时(或多次)可能需要辅助方法,将其作为插件接口的一部分公开是没有意义的(例如,因为它们会改变内部状态).
  • 如何进行单元测试?

比如看blockUI插件,怎么能方法安装、删除、重置是否经过单元测试?

For example, looking at blockUI plugin, how can methods install, remove, reset get unit-tested?

为了画一个平行线,在 Java 中我会:

To draw a parallel, in Java I would:

  1. 创建一个仅包含公共方法的 BlockUI 接口(根据定义)
  2. 创建一个实现上述接口的 BlockUIImpl 类.此类将包含可能是公共的或(包)受保护的 install()、remove()、reset() 方法

因此,我将对 Impl 进行单元测试,但客户端程序员将通过 BlockUI 接口与插件进行交互.

So, I would unit-test the Impl but client programmers would interact with the plugin via BlockUI interface.

推荐答案

这同样适用于任何其他语言和测试私有方法:要测试私有方法,您应该通过公共接口来使用它们.换句话说,通过调用您的公共方法,私有方法在进程中得到测试,因为公共方法依赖于私有方法.

The same applies here as with any other language and testing privates: To test private methods, you should exercise them via the public interface. In other words, by calling your public methods, the private methods get tested in the process because the public methods rely on the privates.

通常私有方法不会与公共接口分开测试 - 重点在于它们是实现细节,测试通常不应该对实现的细节了解太多.

Generally private methods are not tested separately from the public interface - the entire point is that they are implementation details, and tests should generally not know too much about the specifics of the implementation.

这篇关于如何对 jquery 插件中的私有方法进行单元测试?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

在开发JS过程中,会经常遇到两个小数相运算的情况,但是运算结果却与预期不同,调试一下发现计算结果竟然有那么长一串尾巴。如下图所示: 产生原因: JavaScript对小数运算会先转成二进制,运算完毕再转回十进制,过程中会有丢失,不过不是所有的小数间运算会
append() 方法在被选元素的结尾(仍然在内部)插入指定内容。 语法: $(selector).append( content ) var creatPrintList = function(data){ var innerHtml = ""; for(var i =0;i data.length;i++){ innerHtml +="li class='contentLi'"; innerHtml +="a href
问题描述: 在javascript中引用js代码,然后导致反斜杠丢失,发现字符串中的所有\信息丢失。比如在js中引用input type=text onkeyup=value=value.replace(/[^\d]/g,) ,结果导致正则表达式中的\丢失。 问题原因: 该字符串含有\,javascript对字符串进行了转
Rails/Javascript: How to inject rails variables into (very) simple javascript(Rails/Javascript:如何将 rails 变量注入(非常)简单的 javascript)
CoffeeScript always returns in anonymous function(CoffeeScript 总是以匿名函数返回)
Ordinals in words javascript(javascript中的序数)