标签: quick-nimble

iOS - 为什么要快速灵活地使用XCTest

Quick是一种行为驱动的开发测试框架.我想知道为什么这比定期XCTests更好.Nimble只是一个匹配库,但它使得测试很容易阅读,比如期望(13)> 9.

对我而言,Quick提供了一个新的词汇表来编写测试(XCTests没有),并使您专注于编写单元测试.基本上它是TDD的特征诱导路径.当测试失败时,它也更具描述性.

我注意到的另一件事是,如果我想看一个方法做什么,如果我去快速规范我可以很容易地阅读什么是被测试,然后了解更多关于方法而不是写方法的评论.因此,快速规范充当对方法的评论.

关于Quick或BDD还有什么我应该知道的吗?

bdd ios quick-nimble

14
推荐指数
1
解决办法
1924
查看次数

Swift Quick/Nimble 测试未运行

我试图做一个简单的测试来看看 Quick 和 Nimble 是否正常工作,但它们没有。这是我应该打破的简单测试:

import Quick
import Nimble

class SomeSpec: QuickSpec {
    override func spec() {
        describe("bad test") {
            it("does not pass") {
                expect("good").to(equal("bad"))
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但如果我运行测试,我会看到输出:

在 0.000 (0.004) 秒内执行了 0 次测试,其中 0 次失败(0 次意外)

我不知道为什么要进行零测试。我确实使用 Swift Package Manager 安装了 Quick 和 Nimble,而不是 Cocoapods,如果这可能是问题的原因的话。

xcode unit-testing swift quick-nimble

8
推荐指数
1
解决办法
2908
查看次数

BDD测试中的Moya存根请求

我想在我的Quick/Nimble BDD测试中提出Moya存根请求.Moya有一个我使用JSON文件创建的参数:sampleData

var sampleData: Data {
    switch self {
    case .getPlaces:
        // Provided that project have a file named get_places.json in it's bundle.
        guard let path = Bundle.main.path(forResource: "get_places", ofType: "json"),
            let data = Data(base64Encoded: path) else {
                return Data()
        }
        return data
    case .getPlaceDetail:
        // Provided that project have a file named get_place_detail.json in it's bundle.
        guard let path = Bundle.main.path(forResource: "get_place_detail", ofType: "json"),
            let data = Data(base64Encoded: path) else {
                return Data() …
Run Code Online (Sandbox Code Playgroud)

swift quick-nimble moya

8
推荐指数
1
解决办法
1029
查看次数

是否在Swift 3中弃用了setTimer?

我正在尝试为Swift 3创建一个CocoaPod.因为CocoaPods使用NimbleQuick,而那些库还没有更新,我分配了repos并试图转换它们.

在Nimble项目中,有一个函数调用,签名为:

setTimer(start: DispatchTime, interval: UInt64, leeway: UInt64)
Run Code Online (Sandbox Code Playgroud)

编译说 Cannot invoke 'setTimer' with an argument list of type '(start: DispatchTime, interval: UInt64, leeway: UInt64)'

private let pollLeeway: UInt64 = NSEC_PER_MSEC
let interval = UInt64(pollInterval * Double(NSEC_PER_SEC))
asyncSource.setTimer(start: DispatchTime.now(), interval: interval, leeway: pollLeeway)
Run Code Online (Sandbox Code Playgroud)

自动完成显示所有setTimer方法都已弃用,但是从我发现它们不应该这样做.

有替代品吗?

quick-nimble swift3

7
推荐指数
2
解决办法
1875
查看次数

Swift:快速/敏捷运行异步测试显示错误:“InvalidNimbleAPIUsage”,原因:“expect(...).toEventually(...) 只能在主线程上运行。”

我正在使用 Quick/Nimble 发出网络请求 (URLRequest) 来实现一个测试用例,但出现此错误:

 *** Terminating app due to uncaught exception 'InvalidNimbleAPIUsage', reason: 'expect(...).toEventually(...) can only run on the main thread.'
Run Code Online (Sandbox Code Playgroud)

这是我的测试用例:

 expect(someVar).toEventually(equal("bar"), timeout: 0.2, pollInterval: 0.1, description: "time")
Run Code Online (Sandbox Code Playgroud)

如果改变我的实现:

DispatchQueue.main.async {
    expect(someVar).toEventually(equal("bar"), timeout: 0.2, pollInterval: 0.1, description: "time")
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

*** 由于未捕获的异常“InvalidNimbleAPIUsage”而终止应用程序,原因:“不允许嵌套异步期望以避免创建片状测试。

你们中的任何人都知道如何使用此测试用例来工作吗Quick/Nimble

我非常感谢你的帮助

quick-nimble ios10.3 xcode10 swift5

7
推荐指数
0
解决办法
1560
查看次数

为什么在使用Quick进行单元测试时多次调用before-andAach块?

我写了一个包含beforeEach和的示例组的测试用例afterEach.我希望每个beforeEachafterEach将每个调用一次it.

唉,单个itbeforeEach,并afterEach得到了多次调用.

我查看了一些文档(即Quick自己的文档和http://jasmine.github.io/2.1/introduction.html),但这些文档并没有帮助我.

这是一个小片段,演示了这一点:

class CheckerTests:QuickSpec {

override func spec() {

    describe("something") {
        beforeEach {
            tLog.info("describe before")
        }
        afterEach {
            tLog.info("describe after")
        }

        context("of something") {
            beforeEach {
                tLog.info("context before")
            }
            afterEach {
                tLog.info("context after")
            }

            it("should behave like something") {
                tLog.info("in the `IT`")
                expect(true).to(beTrue())
            }
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

}


我的控制台记录:

控制台日志之前

以上日志提出了两个问题:

  • 我不知道 beforeEachafterEach现在被称为; 我也不知道为什么我会看到多个日志调用它们.为什么他们多次被召唤?

- 上面的日志显示在示例通过之前 …

unit-testing ios quick-nimble

6
推荐指数
1
解决办法
407
查看次数

单元测试(快速/灵活)-(未找到测试)

我在单元测试方面遇到问题。当我运行测试时,它最终以"No tests found". 我正在使用AppCodeQuick/Nimble框架进行单元测试,但它在 XCode 中也不起作用。

我已经XCTest/Kiwi使用“目标:MyAppTests”、“配置:开发”和“类:所有测试类”运行配置(即使指定了特定测试类,它也不起作用)。据我所知,没有什么更多的配置。

有什么想法我做错了吗?我不确定我应该提供什么其他类型的信息/配置..谢谢

编辑:示例单元测试代码

import Quick
import Nimble
@testable import FigurePOS

class DateFormatterTest: QuickSpec
{
    override func spec()
    {
        describe("formatting dates") {
            it("should print correct date") {

                var c = DateComponents()
                c.year = 2016
                c.month = 5
                c.day = 24
                c.hour = 4
                c.minute = 33
                c.second = 12

                let gregorian = NSCalendar(identifier: .gregorian)!
                let date = gregorian.date(from: c)!

                expect(DateFormatter.formatGmt(date)).to(equal("2016-05-24T04:33:12Z"))
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

unit-testing ios appcode swift quick-nimble

5
推荐指数
1
解决办法
1585
查看次数

测试使用Nimble在Quick中引发错误的方法时出错

我在测试一个抛出异常的方法时让Nimble匹配器正确无误.根据文档,它应该很简单.我只需要这样的期望

expect( try somethingThatThrows() ).toNot( throwError() ) 
Run Code Online (Sandbox Code Playgroud)

但是对于Swift 3和Xcode 8.2,我得到了一个编译器编辑器.这是上下文.

describe("Using RealmDatasource") {

   let datastore = RealmDatasource() as Datasource

       it("can retrieve an object") {

           expect( try datastore.getCurrentObject() ).to( throwError() )

       }

}
Run Code Online (Sandbox Code Playgroud)

我在'it'声明行上收到以下错误

Invalid conversion from throwing function of type '() -> () throws to non-throwing function of type '() -> ()'
Run Code Online (Sandbox Code Playgroud)

swift quick-nimble

5
推荐指数
1
解决办法
957
查看次数

swift中的Quick框架中的describe和context有什么区别?

我试图找出描述和上下文之间的差异。但我有点困惑。因此任何人都可以阐明它们之间的差异以及它们各自的用例。

另外,我什么时候应该在测试用例中编写嵌套描述?

谢谢

testing unit-testing swift quick-nimble

5
推荐指数
1
解决办法
1698
查看次数

灵活 - 期望等于 <0.9602>,得到 <0.9602>

我的项目是用 Swift 2.0 编写的,我使用 Quick & Nimble 来测试我的代码。

expect(workerSpy.buySharesQuantity).to(equal(0.9602))
Run Code Online (Sandbox Code Playgroud)

我得到的是带有错误消息的预期失败

expected to equal <0.9602>, got <0.9602>
Run Code Online (Sandbox Code Playgroud)

buySharesQuantity 的定义

var buySharesQuantity: Double = 0.0
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么?

testing nimble swift quick-nimble

3
推荐指数
1
解决办法
587
查看次数

Quick-Nimble框架中是否有等效的XCTFail()?

对于特定情况,我需要在Quick - Nimble框架中无条件生成测试用例失败。我该怎么做呢?等效XCTFail("Expecting to get failure callback")将是有帮助的。

unit-testing swift quick-nimble

3
推荐指数
1
解决办法
448
查看次数

标签 统计

quick-nimble ×11

swift ×7

unit-testing ×5

ios ×3

testing ×2

appcode ×1

bdd ×1

ios10.3 ×1

moya ×1

nimble ×1

swift3 ×1

swift5 ×1

xcode ×1

xcode10 ×1