我如何在Qunit"中思考使用我自己的JavaScript库?
我熟悉javascript开发,但现在我想开始使用Qunit (我的应用程序使用HTML / JavaScript)。
我制作自己的图书馆。我使用公共函数和私有函数。我还使用异步函数(事件监听器和回调)similar to jQuery:
var mylib;
(function() {
//...
})();
我不知道如何组织它。以下是一些问题,以澄清我寻求的答案:
是否有建议用于单元测试的QUnit插件?
使用GitHub,我可以在提交时自动使用QUnit吗? 你是如何设置的?也许使用travis-ci?
如何对异步函数进行单元测试?具体来说,如果函数与 LocalStorage (HTML5存储)有链接并且可以与其他页面(like this)交互,该怎么办?我怎么测试呢? 我应该使用对象变量而不是LocalStorage吗?
我访问了官方网站http://qunitjs.com/,但我不认为文档是一个很好的起点。
答案 0 :(得分:3)
Travis-ci确实是一种触发测试的好方法,包括客户端库。
答案" Using Travis-CI for client-side JavaScript libraries?"在kort/kort/tree/develop/test/client
中提供此类测试的良好示例,其中包括QUnit in its index.hml
file
关键是使用Grunt.js。
Travis作业的一个例子:kort/kort/jobs/3266208确实包括运行QUnit。
4年后,在赏金之后更新:
您可以在使用Travis的FredrikNoren/ungit中看到单位测试超时。
但由于你不在GitHub上,你可以使用像GitLab-CI这样的替代品(使用你自己的GitLab CE -- Community Edition -- server if you want)
在" GitLab Frontend testing standards and style guidelines"中查看更多该方法:应用于GitLab项目的最佳实践也可以应用于您的项目。
您可以看到他们的unit test policy。
答案 1 :(得分:1)
我相信“如何对私有功能进行单元测试?”的最佳答案。是:
您可以通过测试公共功能来测试私有功能。
也就是说,您不会直接测试私有功能。您可以通过完全测试使用它们的公共功能(使用足够的输入来测试专用功能中的边缘情况)来测试它们。
理论与最佳实践对话:该问题与Abstraction有关。公共职能部门通常需要通过私人职能部门执行较高级别的工作,而这需要较低级别的工作。访问公共功能的实体(同一软件中的另一个模块,使用该库的开发人员,调用API的人员等)仅关心高级公共功能的作用。他们不需要(或能够)知道具体的实现是什么。离他们抽象。
示例时间:假设我们有一个公共功能,该功能是图形设计库的一部分。此函数采用十六进制颜色值(如“#ff112a”)并将其转换为通用颜色名称,如“红色”。
内部,我们可以使用几个私有函数:
但是,我们也可以在一个公共职能中完成所有这些工作。或者,我们可以在内部使用不同的方法来使用一组不同的私有函数。
重点是私有函数是私有的,因为它们包含应从外部隐藏的细节。我们不会直接测试这些私有功能,以使我们的测试保持在公共功能的抽象级别,并且我们不坚持内部结构以任何特定方式工作。