代码之家  ›  专栏  ›  技术社区  ›  SwiftingDevRok

Realm模型在运行单元测试时不存储数据

  •  1
  • SwiftingDevRok  · 技术社区  · 9 年前

    我正在尝试使用iOS 8.x和Xcode 6.4测试我的Swift 1.2应用程序。我的测试中使用了快速/灵活。 现在我的领域模型有一个问题:我的测试 总是 失败,无论我试图插入什么-其中没有数据。

    我从内存领域开始(没有成功),后来又转到了磁盘领域,但同样没有成功。

    我用realm Browser检查了磁盘上的领域,但realm表没有记录。模拟器在 tmp 或在 documents 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 回复  |  直到 9 年前
        1
  •  1
  •   kishikawa katsumi    9 年前

    看来你没有 添加 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