Nimble icon indicating copy to clipboard operation
Nimble copied to clipboard

Error "any AssertionHandler' has no member 'assertionFailure" when running example test

Open molenick opened this issue 2 years ago • 7 comments

  • [x] I have read CONTRIBUTING and have done my best to follow them.

What did you do?

  1. Added quick and nimble to my pods file:
  target 'MyTests' do
    inherit! :complete
    pod 'Quick'
    pod 'Nimble'
  end

Is use_frameworks! required?

  1. pod install

  2. Add my test:

import Nimble
import Quick

class SomeSpec: QuickSpec {
  override func spec() {
    describe("Quick nimble config test") {
      it("has everything you need to get started") {
        expect(true).to(equal(true))
      }
    }
  }
}

What did you expect to happen?

The test to build and run.

What actually happened instead?

I got an error:

.../Pods/Nimble/Sources/Nimble/Adapters/AssertionRecorder.swift:81:26 Value of type 'any AssertionHandler' has no member 'assertionFailure'

Environment

List the software versions you're using:

  • Quick: 5.0.1
  • Nimble: 10.0.0
  • Xcode Version: 14.3.1)
  • Swift Version: 5.8.1)

Please also mention which package manager you used and its version. Delete the other package managers in this list:

  • Cocoapods: 1.12.1

molenick avatar Aug 10 '23 19:08 molenick

If it's useful, I get the same error with just this minimal spec:

import Nimble
import Quick

class MobileTests: QuickSpec {}

molenick avatar Aug 10 '23 20:08 molenick

I think I figured it out - I wasn't importing XCTest so Nimble's default assertion handler was missing, thus the error.

After adding the import and doing the following:

  • close xcode
  • delete DerivedData
  • pod deintegrate
  • pod install

I got the test to build and run. :)

molenick avatar Aug 10 '23 20:08 molenick

Scratch that, it works on the first run but subsequent runs re-surface the same issue.

molenick avatar Aug 10 '23 20:08 molenick

Weird. I'm unable to reproduce the issue.

Attached is a zip file of the sample project I'm working with. Incredibly minimal, based off what you provided. Are you doing anything odd with Nimble (like a custom assertion recorder/handler, maybe?) that could help me reproduce?

CocoapodsTestApp.zip

younata avatar Aug 12 '23 19:08 younata

Also, I do have to point out that Nimble 10 is more than a year old at this point. I understand the reluctance to upgrade Quick (though, Quick 7 fixes the issues with Quick 6). Nimble 12.2.0 is the current version, so maybe updating might help?

younata avatar Aug 12 '23 19:08 younata

Thanks for taking a look! I ended up getting this working with SPM and Quick 7/Nimble 12. I'm going to try and circle back and try again with CocoaPods and more recent versions and report back.

The versions in my original issue were what I ended up with just adding version-less pods to my podfile. I'll try again with the most recent and see if that was enough to get things going.

molenick avatar Aug 14 '23 18:08 molenick

Took a look again and got the same results for Quick 7 and Nimble 12 using Cocoapads. This is for a React Native project, my hunch is that there's some friction around the way RN includes pods in targets since @younata's sample app demonstrates there's no issue in quick/nimble itself.

The weird thing for me, which is probably a hint, is that the tests build and run successfully on the first run but fail on every subsequent build. 🤷‍♀️

I think the solution for me is to just include Quick/Nimble in my project using SPM since it's working and doesn't make things too terribly complicated from a dependency management perspective.

molenick avatar Aug 14 '23 21:08 molenick