我有一个模块,它不应该直接从命令行使用 Node.js 调用。为此,我正在检查文档中指示的主模块:
if (require.main === module) {
console.error('This module cannot be run from the command line.');
} else {
// Here the module logic...
}
Run Code Online (Sandbox Code Playgroud)
现在我正在为这个模块编写单元测试(如果重要的话,使用 Mocha/Chai),我想模拟直接从命令行调用模块的情况,当错误应该打印到 stderr 时。
其余的逻辑已经在测试中,但require.main === module
我的单元测试无法覆盖分支。我想象解决这个问题的最干净的方法是require.main
在模块内部模拟,但我不知道如何做到这一点。我们已经使用 proxyquire 来模拟依赖关系,但在这种情况下它没有帮助。
任何建议如何处理这个问题?
我的应用程序中的实体类声明了一个数字常量,例如
public static final int MAX_VALUE = 999;
Run Code Online (Sandbox Code Playgroud)
该常量已在应用程序的不同部分中使用。
现在我想在参数注释中的静态服务中使用这个常量。问题是注释@DefaultValue需要一个字符串而不是一个 int。所以我尝试使用String.valueOf
来获取字符串
@DefaultValue(String.valueOf(PDCRuleMapping.MAX_VALUE)) final int upperBound,
Run Code Online (Sandbox Code Playgroud)
但它无法编译,因为
注释属性 DefaultValue.value 的值必须是常量表达式
我可以重用我的数字常量来以某种方式获取常量字符串表达式,还是必须编写"999"
?