Swift 使用Quick Manager在测试中设置身份验证标头

Swift 使用Quick Manager在测试中设置身份验证标头,swift,testing,quick-nimble,Swift,Testing,Quick Nimble,我正在使用Quick和Nimble为我的应用程序编写测试。我已经到达了需要验证的测试部分。我的应用程序的工作方式是有一个名为AuthenticationManager的singleton,它具有登录等方法。此类还保存当前的authenticationToken: public var token: String? public var headers: HTTPHeaders { guard let token = token else { return ["Accep

我正在使用
Quick
Nimble
为我的应用程序编写测试。我已经到达了需要验证的测试部分。我的应用程序的工作方式是有一个名为
AuthenticationManager
singleton
,它具有登录等方法。此类还保存当前的
authenticationToken

public var token: String?

public var headers: HTTPHeaders {
    guard let token = token else {
        return ["Accept": "application/json"]
    }

    return [
        "Authorization": "Bearer \(token)",
        "Accept": "application/json"
    ]
}
这在实际使用中起作用,但是,当它与测试一起运行时,
token
变量的值似乎会在测试开始时重置。我尝试在我的
QuickSpec
文件的
setUp()
方法中进行登录调用,但是,这不起作用。我还尝试在测试的
it
语句中调用te login,但也没有成功。这是我现在的代码:

override func spec() {

    describe("When a user validates their current password") {
        describe("And the password is correct") {
            it("should validate the user correctly") {
                AuthenticationManager.shared.login(username: "test@example.com", password: "secret") { _ in }
                expect(Validator.validateCurrentPassword("secret")).to(equal(true))
            }
        }
    }
}

我已经检查过了,登录详细信息是正确的,但是测试运行时没有可用的令牌。。。有人对此有经验吗?

我想可能是重复的^^登录是一项异步网络任务,需要一些时间才能完成。一旦有了有效的响应,您应该使用期望并在completionHandler中执行断言