如何对 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:
- 创建一个仅包含公共方法的 BlockUI 接口(根据定义)
- 创建一个实现上述接口的 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.
相关文章