我从错误测试我的SVG徽标生成器的错误测试中学到了保证链接(以及更多!)。
#javascript #npm #测试 #jest

几个小时致力于磨练我的JavaScript技能,该技能围绕着通过命令行构建SVG-LOGO生成器,我熟悉了Node Package Manager(NPM),并学习了节点必不可少的三个概念。以前,我几乎不知道NPM软件包“ Jest”以及如何使用它来编写单元测试来防止错误的代码。但是,在重新观看了几次演讲并观看了几个YouTube教程之后,我已经确定了这些概念,因此,我大大提高了我编写单元测试的能力。

最初很困难的第一个概念,但对我来说是必不可少的,这是诺言。当一个人创建新的承诺时,其参数必须是一个函数。该嵌套函数具有其两个自己的参数(解析和拒绝方法),并且该函数指定必须满足的条件才能解决或拒绝承诺。
例如:


let myPromise = new Promise((resolve, reject) => {
    if (myName === “Max”) {
    resolve(“Success! the promise was resolved)
    }
    else {
    reject(new Error (“oops! error occurred”));
    }
})

解决和拒绝是执行人功能,在执行后,会更改解决或拒绝的承诺的状态。解决的承诺允许使用.when()函数连续将多个函数束缚在一起。被拒绝的承诺表明该功能的不需要输出,并停止了依赖该诺言的功能链。此示例表明,被拒绝的承诺会产生,然后将其扔到链式。承诺对象是多功能的,不仅有助于简化复杂的JavaScript功能。

我被迫学习三个概念中的第二个概念,同时使用开玩笑来编写一个验证我命令行应用程序准确性的测试。我利用执行侧面执行的异步函数,这意味着遵循异步函数执行的代码在后台运行时执行时执行,以编写我的测试。我的测试的结尾包括提供测试输出的异步功能。遵循我的异步函数是比较语句预期(),它使用了从异步函数的测试输出来查看它是否匹配了预期的输出。由于异步函数在执行Expect()语句之前没有在后台运行,因此Expect()将预期输出比较一无所有。结果,测试失败了。

为了解决此问题,我学会了将异步和等待功能合并,以将我的异步函数转换为同步函数。将整个测试代码标记为“ async”,使我能够使用等待的功能,该功能在继续执行其余代码之前等待承诺。我在异步函数的前面等待着,该程序将等待异步功能的解决承诺。这表明它完成了任务,然后将运行Expect()语句,这次使用了必要的数据来进行比较。异步和等待关键字为我非常喜欢的JavaScript函数增加了功能的另一个维度。它通过添加一个充满挑战但有意义的工作的时间方面来扩大JavaScript程序的复杂性。

我学到的三个概念中的最后一个是需求和导入之间的区别。与导入不同,需要在任何地方进行调用并立即执行,无论该程序中的位置如何。相反,导入的实例将悬挂到要执行的函数的顶部。导入是一种异步功能,也依赖于承诺,而要求并不是因为它是同步函数。这些区分显然区分了这两个功能的用例。在练习这两个功能之后,我发现自己使用的经常需要更多,因为我不必担心异步功能的时间方面。

我目前正在研究读书文件,以供我的应用程序提交作为新兵训练营的分配。我很高兴能够花费尽可能多的时间进行这项任务,因为它教会了我很多适用于Node和Jest的基本JavaScript概念。练习了一段时间后,我更有信心创建使用多个文件的命令行应用程序。