Tag: 线索

在Swift中编写更好的单元测试:第一部分

问题 瞧,我们是这里的朋友,所以我觉得我很坦白:我在职业生涯中写了一些非常糟糕的单元测试。 20行怪物,具有多个模拟和断言以及异步期望。 您在书中看到的这类标题为“如何修复以前工作过的白痴留下的混乱”的书。我还必须在写完单元测试和不太那么说的代码后维护该代码。更好。 可以这么说,我现在将编写“好的”单元测试作为优先事项。 在开始之前,我将定义我认为是“良好”的单元测试。 如果我们可以同意一个单元测试(或者实际上是任何一个测试)是由一些设置 ,我们正在测试的动作以及关于该动作效果的断言组成的,那么我可以这么简单地说,一种“好的”单元测试可以使这三个组件中的每一个都清晰可见。 (此外:这可能与您对“好的”单元测试的定义有所不同,而这只是我们俩都必须忍受的。) 在一些博客文章中,我将向您展示我们在Clue所做的一些工作,以确保我们始终试图编写“良好”的单元测试。 在本文中,我们将看一个简单的技巧,我们可以使用它来最小化单元测试的设置部分,同时保持清晰度。 假设我们要在一个简单的Swift结构上对相等方法进行单元测试。 struct用户:Equatable { 命名:字符串 让电子邮件:字符串 让需求验证:布尔 静态函数==(lhs:用户,rhs:用户)-> Bool { 返回lhs.name == rhs.name && lhs.email == rhs.email && lhs.needsVerification == rhs.needsVerification } } 我们可以(无限)有许多不同的参数组合可以传递给此方法进行测试。 显然,我们无法对所有这些进行测试,因此我们必须选择一些代表总体趋势的案例。 对该方法进行单元测试的有效方法(实际上,我通常会使用测试驱动的开发方法编写这种方法)是从两个User的所有属性均相等的情况开始,然后测试每个属性不同时会发生什么。 这给了我们这样的测试套件: func test_equals_allPropertiesMatch_isTrue(){ let sut = User(名称:“”,电子邮件:“”,needsVerification:false) 让其他=用户(名称:“”,电子邮件:“”,需要验证:false) XCTAssertEqual(ut,其他) XCTAssertEqual(other,sut) } func test_equals_nameDiffers_isFalse(){ let sut = User(名称:“ Jo”,电子邮件:“”,需要验证:false) 让其他=用户(名称:“”,电子邮件:“”,需要验证:false) […]

客户电话:Jan Klausa,线索

这是我们的 Customer Convos系列 的一部分 。 我们正在分享人们在工作中如何使用npm的故事。 想分享您的想法吗? 给我们打个 电话 。 问:嗨! 你能说出你的名字和你做什么吗? 嗨! 我是Jan,我是Clue的iOS开发人员。 你今天过得怎样? 和我的猫一起变冷 ,所以很好。 告诉我贵公司的npm故事。 我们的产品是iOS和Android的两个移动应用程序。 我们使用JavaScript编写了一些逻辑,因此我们不必在两个平台上都做两次即可共享。 使用真正的软件包管理器来处理该问题,而不是不时有人“嘿,我们应该更新应用程序中的JS,是吗?”非常好。 您能告诉我们有关您想使私人包装真正使您能够做的特定包装的故事吗? 对于我们的每个平台,我们应用程序的某些核心逻辑确实很容易出错并且很难重新编写-但是它具有许多专有逻辑,因此将其私有化是必须具备的。 贵公司是否开源? 您如何协商保密和公开的内容? 我们确实有一个GitHub组织,并且那里没有几个仓库,这些年来我们已经建立了很少的帮助程序,但这不是我们工作的重要部分。 最近,我们一直在内部进行讨论,以找出在更广泛的环境中有用的点点滴滴并将其开源化,但还没有具体的方法。 对于不确定谁可以使用私有软件包的人,您将如何解释用例? 通过类比GitHub私有orgs / repos。 您知道您的源代码在私人仓库中如何吗? 好吧,您的JS库的构建工件也可以! 使用私有软件包的日常经验如何? 相当无缝! 我对Web界面的了解很少(进入私有软件包的点击次数过多,我很想查看版本历史记录),但是否则我不能说我注意到任何问题。 哦! 今年早些时候,成立组织的人离开公司时发生了一个问题。 我记得有人抱怨过将所有权转让为PITA的过程,但是我并没有参与其中,所以我真的不记得具体细节…… 编者注:我们总是很乐意提供帮助! 如果您有任何问题,请通过 support@npmjs.com 与支持 联系 。 您是否建议其他组织或公司使用私有软件包或组织? 为什么? 是。 “请停止在回购之间复制粘贴文件。” 我没问过你是否希望我有任何问题吗? Nyup,我想您已将其覆盖。 您要宣传的贵公司公开做过的任何酷npm东西? 可悲的是……