gpt4 book ai didi

javascript - 使用 Jasmine 进行单元测试时模拟全局对象

转载 作者:行者123 更新时间:2023-11-30 11:21:29 24 4
gpt4 key购买 nike

我需要为从 node.js 运行的遗留 JavaScript 脚本编写测试。它有一个全局对象,该对象在一个函数中初始化,然后从另一个函数访问。我的意思是 script.js 看起来像:

var object;

function first() {
object = Initialise.object();
...
}

function second() {
object.doSomething();
...
}

我需要为 second() 函数编写单元测试。我们正在使用 jasmine 测试框架,我正在努力为 object 创建模拟( stub )。这是因为我不知道如何从 script-spec.js 访问它。我试过了

var script = require("../src/script.js");
var testObject = script.object;

但是 testObjectundefined

我对 JavaScript 的了解有限,这对我也没有帮助(我有 Java 背景)。

如何测试 second() 函数?我知道我可能需要重构/重新设计我可以接受的 script.js

最佳答案

我会重写代码以使其更具功能性:

function first() {
return Initialise.object();
}

function second(object) {
object.doSomething();
...
}

然后后面使用代码的时候:

var object = first()
second(object)

然后模拟变得非常微不足道,因为您可以控制在测试中将什么作为参数传递给 second

查看 Avoid Side Effects in the Clean Code Javascript repo有关此的更多信息。

关于javascript - 使用 Jasmine 进行单元测试时模拟全局对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49682026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com