Realm模型在运行unittests时不存储任何数据

时间:2015-08-10 10:41:39

标签: ios swift unit-testing realm xctest

我正在尝试使用iOS 8.x和Xcode 6.4来测试我的Swift 1.2应用程序。我的测试中使用了Quick / Nimble。 现在我的Realm模型出现了问题:我的测试总是失败,无论我尝试插入它还是什么 - 它里面没有数据。

我开始使用内存领域(没有成功),后来切换到磁盘领域,但又一次没有成功。

我使用Realm Browser检查了磁盘领域,但Realm表没有记录。模拟器还在tmpdocuments dir中包含相应的域文件。

我的测试看起来像这样:

import Quick
import Nimble

import RealmSwift
import MyDemoApp 

class TestBuilder: QuickSpec {
    override func spec() {
        var realm: Realm!

        describe("") {
            beforeEach {
                realm = Realm(inMemoryIdentifier: "test")
            }

            it("something ") {
                let builder = SummaryBuilder(realm: realm)
                builder.build()
                expect(realm.objects(StatSummary).count).toEventually(equal(1)) // This test fails. The realm has 0 objects.
            }
        }
    }
}

我想测试的结构就是这个:

import Foundation
import RealmSwift

public struct SummaryBuilder {

 private var realm: Realm!
 public init(realm: Realm = Realm()) {
    self.realm = realm
}
 public func build() -> Void {
        realm.write {
            let summary = StatSummary()
        }
    }
}

write闭包切换到隐式交易(beginTransaction() / commitTransaction())没有成功。

Realm和Quick / Nimble使用Cocoapods集成。 podfile是:

use_frameworks!
pod 'RealmSwift'


def testing_pods
    use_frameworks!
    pod 'Quick', '~> 0.3.0'
    pod 'Nimble', '~> 1.0.0'
end

target 'MyDemoAppTest' do
    testing_pods
end

1 个答案:

答案 0 :(得分:1)

您似乎根本没有将StatSummary对象添加到Realm。您应添加任何要存储到Realm数据库的对象。如下:

realm.write {
    let summary = StatSummary()
    realm.add(summary) // You should add object to realm
}

请参阅文档的写入部分。 https://realm.io/docs/swift/latest/#adding-objects