Javascript 如何使用mocha测试私有功能?

Javascript 如何使用mocha测试私有功能?,javascript,jquery,unit-testing,mocha.js,chai,Javascript,Jquery,Unit Testing,Mocha.js,Chai,由于我不熟悉单元测试,我想测试我的javascript代码,因为它非常混乱。。我真的希望有人能帮我解决问题 如果(!通知){ 通知={}; 否则{ 如果(通知类型!=“对象”){ 抛出新错误(“已存在”); } } Notification.admin=函数(){ var res={}; var=”; var DefaultValue=函数(ans、类型、commnon、状态){ var notify=type.concat(通用); if($(“#方法”).val()=“false”&&typ

由于我不熟悉单元测试,我想测试我的javascript代码,因为它非常混乱。。我真的希望有人能帮我解决问题

如果(!通知){
通知={};
否则{
如果(通知类型!=“对象”){
抛出新错误(“已存在”);
}
}
Notification.admin=函数(){
var res={};
var=”;
var DefaultValue=函数(ans、类型、commnon、状态){
var notify=type.concat(通用);
if($(“#方法”).val()=“false”&&type=“Text”){
如果(状态){
返回数据=';
}否则{
返回数据=“”+“”+“”-“”+“”;
}
}否则,如果(状态){
如果(ans){
返回数据=';
}否则{
返回数据=';
}
}否则{
返回数据=“”+“”+“”-“”+“”;
}
};
this.init=函数(){
};};Notification.Obj=new Notification.admin();
$(文档).ready(函数(){
Notification.Obj.init();
});
这是我的私人功能,我想进行单元测试,因为我正在使用mocha和chai


我无法单元测试此函数

您不能为私有方法编写测试

公共方法是类的公共接口。从外部调用的方法。私有方法是您不关心的实现细节

单元测试的范围是测试一个类的所有公共方法(不,在类中公开私有方法不是解决方案)

将私有方法的实际业务部分重构到新服务中。该服务将具有通过公共方法提供的功能。您可以测试该服务。然后,在当前服务中,您可以注入该服务并使用其功能


这就是说:您只能对没有副作用的方法进行单元测试,并且可以模仿其依赖关系(依赖关系注入).

@k0pernikus谢谢你的建议..你能再给我一点elabarote吗,这样我就可以清楚地知道我需要做什么了..@john你不需要单元测试私有方法。它们是私有的。k0pernikus说的是,你应该只测试你的公共方法,因为这些方法对外部代码是可见的。如果它们工作正常,那么你就可以你不应该真正关心你的私有方法中发生了什么。你真正想要测试的单元是什么?我把
私有函数
误读为
私有方法
。你的代码示例并没有真正说明snipplet应该做什么和你想要测试什么。在我看来,你可能混淆了单元测试(非常容易设置,不包括服务集成)和功能浏览器测试(自动浏览器点击)。因此,您的问题可能过于宽泛,或者实际上是您尝试的解决方案中的XY问题。@k0pernikus我想测试com.help.Notification.admin函数中的Defaultvalue函数……不要将您的
Defaultvalue
函数定义为admin函数中的闭包,而是使其可导入。您还有一个方面-通过jquery选择器
$(“#method”).va产生效果,应该将其传递到该函数中,以便您可以模拟它。然后,它应该成为一个需要5个输入值并创建标签标记字符串的函数,然后您可以对其进行测试。