小编ima*_*00b的帖子

如何在 Node 中模拟 require.main?

我有一个模块,它不应该直接从命令行使用 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 来模拟依赖关系,但在这种情况下它没有帮助。

任何建议如何处理这个问题?

javascript unit-testing module mocking node.js

5
推荐指数
1
解决办法
612
查看次数

将数值常量转换为常量字符串表达式

我的应用程序中的实体类声明了一个数字常量,例如

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"

java constants

4
推荐指数
1
解决办法
2034
查看次数

标签 统计

constants ×1

java ×1

javascript ×1

mocking ×1

module ×1

node.js ×1

unit-testing ×1