在比较了使用和不使用 Angular Component Harness 的 Karma 测试之后,现在将考虑其优点和缺点。可以提到以下几点优点:
简化稳健测试的创建
用于交互和查询组件的高级 API
更好地支持异步交互
然而,后者是一个更大的问题,这就是为什么我们在这里不详细讨论它。
除了优点之外,Angular Component Harness 也有缺点:
附加安装和配置
抽象层可能导致速度减慢
与直接访问相比,复杂性更高
最后两个缺点仅出现在极少数的使用场景中。速度减慢取决于 分时度假业主名单 测试的数量和复杂性。在大多数情况下,测量应该是困难或不可能的。此外,如果所有组件都支持组件线束,那么复杂性就不会增加。传统方法和组件利用的混合会产生缺点。
在本文中,我们看到 Angular Component Harness 在简化测试代码方面具有巨大潜力。但是,应对它们的使用进行评估,以确保额外的实施和配置工作不会太高。
有关更多信息和示例,请参阅角度材质。
您可以在我们之前发布的博客文章中找到来自 adesso 世界的更多令人兴奋的主题。对于一个项目,我决定使用 libgit2 库来实现可移植的 C# 实现。在当前版本 0.26.2(日期为 2019 年 12 月 11 日)中添加 NuGet 包时,出现运行时问题:无法加载共享库。
您可以在此博文中了解有关此错误的更多信息。我将解释如何解决此问题并继续您的项目的步骤。
我首先创建一个 MVP(最小可行产品)来复制问题并在没有任何其他项目依赖项的情况下对其进行探索。然后我就按照流程进行排查并找到解决方案。
我使用.Net 6在Majaro x64上运行整个过程。
复制 MVP 中的错误
我的观察是,每次对库的调用都会导致错误。因此,问题很容易复制:我只需包含 NuGet 包并从库中调用某些内容即可。
在我的机器上重新创建错误后,我创建了一个新的存储库并添加了重现该错误所需的最少代码。该存储库已上传至 sr.ht。
首先,我们应该仔细查看返回的错误消息以了解根本问题。只有这样我们才会采取进一步的行动并分析开源libgit2存储库中的代码。
我们知道该库是 libgit2 的 C 实现的包装器,用于 .NET 的托管世界。因此,有了这些背景知识,我们可以假设对git2-106a5f2from的引用System.DllNotFoundException是关于本机库的。下一步是确定从何处加载库以及错误发生的位置。有了这些信息,您可以更好地理解问题。
使用调试选项进行检查
该错误消息为我们提供了进一步处理所需的所有信息。它表明LD_DEBUG它正在被使用。那么让我们看看这个环境变量的输出(严重缩短的输出):
如果参数设置LD_DEBUG为all或files,我们会得到类似的结果:
在我看来,如果没有特定版本应用于共享对象文件,则该文件应该是系统来源的。我们检查包管理器并libgit2在系统上安装最新版本的底层库。