如何跳过笑话编译错误并运行测试?

时间:2020-08-12 09:32:12

标签: javascript vue.js jestjs babeljs babel-jest

这是我的vue.js代码:

interface ClientApplicationPriorityRepository : JpaRepository<ClientApplicationPriority, Long> {

    fun deleteAllByClientId(clientId: String): Int
}

问题线可以在浏览器中成功运行,而不会出现任何错误并通过vue-cli编译过程。但是,当我尝试不对这个组件进行测试时,它可能会报告编译错误:

@Transactional public void saveClientApplicationPriorities(String clientId, Boolean isFoldersPresented, List<ClientApplicationPriority> clientApplicationPriorities) { clientApplicationPriorityRepo.deleteAllByClientId(clientId); clientApplicationPriorityRepo.flush(); if (isFoldersPresented) { clientApplicationPriorityRepo.saveAll(clientApplicationPriorities); } }

因此,如果该应用程序可以在浏览器中运行,为什么它不能以玩笑方式运行?我可以跳过此编译错误吗?

1 个答案:

答案 0 :(得分:0)

ReferenceError不是编译而是运行时错误。 let t = typeof t === 'undefined' ? {} : t是无效的ES6代码。 let在其分配之前一直处于块范围内,并处于时间盲区,因此在分配期间引用变量是错误的。

这在Jest中不起作用,因为Node.js完全支持ES6,不需要将其编译为ES5,而在浏览器版本中,它可以编译为:

var t = typeof t === 'undefined' ? {} : t;

var的声明被悬挂,因此t变量在赋值期间被定义,因此它与:

var t; // t === undefined
// ...everything that happens in this scope...
t = typeof t === 'undefined' ? {} : t; // always results in t = {}

该条件无用,因为它永远不会达到else,写它的正确方法是:

let t = {};