我试图弄清楚如何限制我的测试,以便覆盖记者只考虑在专门为该功能编写测试时所涵盖的功能.
PHPUnit文档中的以下示例显示了我尝试实现的非常好的内容:
可以在测试代码中使用@covers注释来指定测试方法要测试的方法:
/**
* @covers BankAccount::getBalance
*/
public function testBalanceIsInitiallyZero()
{
$this->assertEquals(0, $this->ba->getBalance());
}
Run Code Online (Sandbox Code Playgroud)
如果执行上述测试,则只将该功能getBalance
标记为已覆盖,而不是其他.
现在来自我的JavaScript测试的一些实际代码示例.此测试显示了我试图摆脱的不需要的行为:
it('Test get date range', function()
{
expect(dateService.getDateRange('2001-01-01', '2001-01-07')).toEqual(7);
});
Run Code Online (Sandbox Code Playgroud)
此测试将将函数标记getDateRange
为已覆盖,但也 标记从内部调用的任何其他函数getDateRange
.由于这个怪癖,我项目的实际代码覆盖率可能比报告的代码覆盖率低很多.
我怎么能阻止这种行为?有没有办法让Karma/Jasmine/Istanbul按照我想要的方式运行,或者我是否需要切换到另一个JavaScript测试框架?
我在TypeScript中编写了以下函数
function initializeTasksPerUserJSON(task)
{
const tasksPerUser = {
'username': task.mantisUsername,
'duration_minutes': task.mantisBugNoteDurationSum,
'categories': {
[task.mantisBugCategoryName]: initializeTaskCategoriesJSON(task)
}
};
return tasksPerUser;
}
Run Code Online (Sandbox Code Playgroud)
这转化为以下JavaScript
function initializeTasksPerUserJSON(task) {
var tasksPerUser = {
'username': task.mantisUsername,
'duration_minutes': task.mantisBugNoteDurationSum,
'categories': (_a = {},
_a[task.mantisBugCategoryName] = initializeTaskCategoriesJSON(task),
_a
)
};
return tasksPerUser;
var _a;
}
Run Code Online (Sandbox Code Playgroud)
我不明白var _a;
返回语句应该完成什么.这对我来说似乎没有意义,因为该行永远不会被执行.这是TypeScript中的错误,还是有更深层的含义?
我正在使用没有任何编译器标志的tsc版本1.8.10.
javascript ×2
github ×1
istanbul ×1
jasmine ×1
transpiler ×1
typescript ×1
unit-testing ×1
user-profile ×1