如何对调用 NSDate() 的方法进行单元测试?

Rod*_*uiz 6 unit-testing nsdate ios swift

我目前正在使用 Swift。

我的问题很简单,你如何对在数据库中创建对象的方法进行单元测试,并将 NSDate() 作为属性?

问题是,根据我的断言,我将创建一个新的 NSDate(),如下所示:

let expectedObject = Object(data: NSDate())
XCTAssertEqual(database.objects(), [expectedObject])
Run Code Online (Sandbox Code Playgroud)

并且断言将失败,因为 2 NSDates 略有不同。

谢谢你。

rkw*_*tra 0

一种简单的解决方法是使用以下方法:

  1. 创建一个派生自被测类的模拟类。
  2. 在被测试的类中添加一个类似“getDate()->NSDate”的方法,该方法返回“NSDate()”或任何期望的值。
  3. 覆盖模拟类中的 getDate()。您还可以在模拟类中创建一个从 getDate() 返回的变量。这样,您就可以提供您想要的任何测试日期。
  4. 最后,不要创建您想要测试的类的实例,而是在测试中创建模拟类的实例。