v7.0.0 beta 2
Pre-releaseQuick 7 Beta 2 changes how test selectors are generated for QuickSpec. Now, both AsyncSpec and QuickSpec will use the unencoded test names as the test selectors. Test selectors are now generated by joining the describe/context blocks leading up to the it block with ", ". This makes test names immensely easier to read. For example, with the following spec:
class MySpec: QuickSpec {
override class func spec() {
describe("some feature") {
context("in one case") {
it("has a behavior") {}
}
context("in another case") {
it("doesn't have the earlier behavior") {}
}
}
}
}will generate the following test selectors:
some feature, in one case, has a behaviorsome feature, in another case, doesn't have the earlier behavior
As with Beta 1, we encourage you to check this out, and to share feedback by filing an issue or discussing this in the discussion page.
Beta 1 Changes
Quick 7 changes how Async tests are run. Instead of forcing all tests to run in an async context, Quick 7 provides a separate Spec class for Async Tests. Create an AsyncSpec subclass, and all tests inside of that subclass will run in an async context. Tests inside of QuickSpec subclasses will have a similar behavior to what was in Quick 5.
Additionally, Quick 7 changes how the DSL is defined slightly. In Quick 6 and before, the DSL was defined as a series of global functions, available to be called anywhere. In Quick 7, these functions were moved to be static methods on the new SyncDSLUser (which QuickSpec, Behavior, and QuickConfiguration conform to) and AsyncDSLUser (which AsyncSpec and AsyncBehavior conform to) protocols. This allows us to make sure that you are using the correct DSL for the context, and was necessary for this approach.
For example:
class SynchronousSpec: QuickSpec {
override class func spec() {
it("runs synchronously, as you'd expect") {
var ocean: [String] = []
DispatchQueue.main.async {
ocean.append("dolphins")
ocean.append("whales")
}
expect(ocean).toEventually(contain("dolphins", "whales"))
}
}
}
class AsynchronousSpec: AsyncSpec {
override class func spec() {
it("runs the test in an async context") {
var ocean: [String] = []
DispatchQueue.main.async {
ocean.append("dolphins")
ocean.append("whales")
}
await expect(ocean).toEventually(contain("dolphins", "whales"))
}
}
}We encourage you to check this out, and to share feedback by filing an issue or discussing this in the discussions.
Auto-Generated Changelog
What's Changed
- Bump git from 1.12.0 to 1.13.0 by @dependabot in #1191
- Bump activesupport from 6.1.5 to 6.1.7.1 by @dependabot in #1196
- Bump danger from 9.1.0 to 9.2.0 by @dependabot in #1198
- Bump cocoapods from 1.11.3 to 1.12.0 by @dependabot in #1201
- Bump activesupport from 7.0.4.2 to 7.0.4.3 by @dependabot in #1203
- Bump fkirc/skip-duplicate-actions from 5.2.0 to 5.3.0 by @dependabot in #1188
- [Translation] AsyncAwait.md Korean translation by @tisohjung in #1204
- Update Nimble to v12 by @younata in #1206
- Demangle QuickSpec test names as much as possible by @younata in #1207
New Contributors
- @tisohjung made their first contribution in #1204
Full Changelog: v7.0.0-beta.1...v7.0.0-beta.2