swift-snapshot-testing | 📸 Delightful Swift snapshot testing | Testing library
kandi X-RAY | swift-snapshot-testing Summary
kandi X-RAY | swift-snapshot-testing Summary
Delightful Swift snapshot testing.
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of swift-snapshot-testing
swift-snapshot-testing Key Features
swift-snapshot-testing Examples and Code Snippets
Community Discussions
Trending Discussions on swift-snapshot-testing
QUESTION
As expected, I normally have difficulties when following TDD (i.e. writing the tests first) with the view layer.
Namely, in order to observe or trigger certain visible changes (layout or styling) I would need to make the view's internals public. This breaks encapsulation and allows for client code do some thing like myView.label.text = "User"
.
To avoid this, I either add getter methods to UIView
class:
ANSWER
Answered 2018-Dec-17 at 06:35Not an expert in Swift, but regardless of the language/framework, something tells me you're actually making your task harder.
I normally have difficulties when following TDD with the view layer.
This is expected. The View support to be simple and have no behavior (i.e domain logic) at all. It should be simple user interaction, and binding data to the controls in the view. So you don't need TDD or to be more precise Unit Tests around the View in my opinion. You're not going to get much value out of trying to write Unit tests for the View.
You View can be tested more effectively using a UI test framework, such as Selenium, or your own UI test framework, which tests User interactions. This way you more return in investment (ROI) than attempting to TDD the View layer.
QUESTION
I'm having issues running xcTests after importing the SnapshotTesting framework available from -> https://github.com/pointfreeco/swift-snapshot-testing#installation
The build succeeds but the test fails
I always get a "Symbol not found: " saying it expected to find it in ....Frameworks/libswiftCore.dylib
e.g.
2018-12-11 17:39:48.799290+1100 Life[38438:3178136] Failed to load test bundle from file:///Users/garrypugh/Library/Developer/Xcode/DerivedData/Life-cowbtmytjcqvmqgvgonauprqpbpa/Build/Products/Debug-iphonesimulator/Life.app/PlugIns/LifeTests.xctest/: Error Domain=NSCocoaErrorDomain Code=3588 "dlopen(/Users/garrypugh/Library/Developer/Xcode/DerivedData/Life-cowbtmytjcqvmqgvgonauprqpbpa/Build/Products/Debug-iphonesimulator/Life.app/PlugIns/LifeTests.xctest/LifeTests, 265): Symbol not found: _$SSS8UTF8ViewVs8SequencesWP Referenced from: /Users/garrypugh/Library/Developer/Xcode/DerivedData/Life-cowbtmytjcqvmqgvgonauprqpbpa/Build/Products/Debug-iphonesimulator/Life.app/PlugIns/LifeTests.xctest/Frameworks/SnapshotTesting.framework/SnapshotTesting Expected in: /Users/garrypugh/Library/Developer/CoreSimulator/Devices/BA4AAED2-B310-4590-BCEB-AF28312A0B35/data/Containers/Bundle/Application/A7A23001-D0C6-47C9-ADED-F31A1136A0BB/Life.app/Frameworks/libswiftCore.dylib
I have followed the Carthage Instructions here ->
https://github.com/Carthage/Carthage#if-youre-building-for-ios-tvos-or-watchos
and here ->
https://github.com/Carthage/Carthage#adding-frameworks-to-unit-tests-or-a-framework
And have successfully (seemingly) downloaded and built the frameworks
Set up Cartfile
Run carthage update - which built the 3 frameworks (Mac, iOS, tvOS) i.e. SnapshotTesting.framework and their related SnapshotTesting.framework .dSYM files
Then when attempting to include this in the Testing Target of my iOS App I followed the following steps
Dragged the iOS SnapshotTesting.framework file to the Build Phases - Link Binary with Libraries Section
Added a /usr/local/bin/carthage copy-frameworks with
Input Files $(SRCROOT)/Carthage/Build/iOS/SnapshotTesting.framework
Output Files $(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/SnapshotTesting.framework
I have ensured that my Runpath Search Paths (within Build Settings tab) has -> @loader_path/Frameworks
I am running Xcode 10.1
I'm not sure if this is a Issue with
Carthage setup
The SnapshotTesting framework
My build settings in Xcode
Or a restriction with dynamic verses static frameworks?
I have tried a few variations on locations of the Input / Output files, running the the Runscript before and after the Link Binary Section
Does anyone recognise this issue, Is there some other build settings that need to change enable this to work.
...ANSWER
Answered 2018-Dec-12 at 09:35Problem Solved
First, Don't drag and drop the carthage generated framework to the Test Target / Build Phases (tab) Link Binary With Libraries (section). Instead use the + button and "Add Other" navigating to the .../Carthage/Build/iOS and choose the framework file in question. Delete the .framework file if you have previously dragged it (and it copied it into the directory)
Second, Add a New Copy Files section in the Build Phases Tab (Last step) with a Destination of Frameworks. Again use the + button to select the SnapshotTesting.framework within Carthage/Build/iOS Remove the Run Script Phase - With - "/usr/local/bin/carthage copy-frameworks" if you have previously added it.
Thanks to the guys at www.pointfree.co
- And a final Gotcha - After doing this I was receiving the build error "Module compiled with Swift 4.2 cannot be imported by the Swift 4.2.1 compiler:" within the xcTest test case where I attempted to import SnapshotTesting. This issue was caused by the fact that I was running Xcode 10.1 - But within Xcode Preferences / Locations Tab the Command Line Tools dropdown had Xcode 10.0 selected - Which I suspect meant that when Carthage was generating the framework modules it was using the older version resulting in a Swift version mismatch?
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install swift-snapshot-testing
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page