我是一位经验丰富的开发人员,但是对Javascript来说还很陌生。我的团队正在使用Platfom即服务解决方案,该解决方案使用特定于域的语言来定义平台上的实体。平台类型在类型文件中定义,实际代码位于单独的Javascript文件中(例如,类似于在C ++中的.h/.cpp
文件中可能看到的声明/实现的分隔)。
这的最终结果是,文件中有多个Javascript函数,这些函数没有被对象作用域所包围。我们需要开始单元测试,而Jasmine是我们的测试框架。对于单元测试,我有两个主要目标:
在本地开发时启用快速反馈循环。我的业力,业力茉莉和业力覆盖在一个不错的本地本地设备上运行,该功能现已完成,并将使其他DevOps管道工作继续进行。
启用VS Code中的测试调试。这就是我要挂断电话的地方。理想情况下,我希望开发人员能够将单元测试逐步引入正在测试的代码中。这确实可以帮助我们测试一些较旧的代码。
(对我而言)问题似乎是在没有因果关系或网页的情况下将Javascript函数带入了一个封闭范围。业力将功能纳入范围并正确运行测试。我还可以使用独立的Jasmine和HTML(SpecRunner.html
)页面来执行测试,但是同样,有一个网页将其纳入其范围(我认为是window
对象)。当我尝试使用Jasmine Test Explorer和jasmine.json配置在VS Code中运行这些测试时,可以看到测试,但是测试找不到功能,并且出现ReferenceError。重新排序并没有改变这种结果。
我稍微看了debugging with karma runner,但运气不佳。有时断点没有触发,有时我无法使它迈出一步……这非常脆弱。如果我只是在设置中错过了一些可以使其正常工作的东西,我会接受这种方法。
假想的代码隐藏文件
//There are multiple functions in this file.
//These are all standalone functions ...not Node-based, and no enclosing object
function codeBehindJavasciptFunction(arg1){
//code I would like to unit test
}
//Another function
function aDifferentCodeBehindFunction(argX, argY){
//other functionality
}
假设的茉莉花测试文件
describe("Unit tests for the type", function() {
describe("Test codeBehindJavascriptFunction", function() {
it("Tests and assertions", function() {
//...
});
});
describe("Test aDifferentCodeBehindFunction", function() {
it("Tests and assertions", function() {
//...
});
});
});
我希望开发人员要做的是在VS Code中触发Jasmine测试,并逐步执行代码。我以为插件的调试功能可以提供此功能,但是我无法获取代码以在jasmine.json中加载配置。带有插件的VS Code可以看到测试,但是由于找不到代码,因此它们在执行中失败。