Repository files navigation

MockingKit Logo

VersionSwift 5.6Swift UIMIT LicenseTwitter: @danielsaidiMastodon: @danielsaidi@mastodon.social

About MockingKit

MockingKit is a Swift library that lets you mock protocols and classes, for instance when unit testing or mocking not yet implemented functionality.

MockingKit lets you create mock implementations of any protocol or mock sub classes any open base class, after which you can call functions, register function results and inspect all recorded calls.

MockingKit doesn't require any project configurations or build scripts, put any restrictions on your code or require you to structure it in any way. Just create a mock and you're good to go.

Installation

MockingKit can be installed with the Swift Package Manager:

https://github.com/danielsaidi/MockingKit.git

or with CocoaPods:

pod MockingKit

If you prefer to not have external dependencies, you can also just copy the source code into your app.

Supported Platforms

MockingKit supports iOS 13, macOS 10.15, tvOS 13 and watchOS 6.

Getting started

The online documentation has a getting started guide guide to help you get started with MockingKit.

In short, MockingKit lets you mock any protocols and open classes. For instance, consider this simple protocol:

protocolMyProtocol{func doStuff(int:Int, string:String)->String}

With MockingKit, you can easily create a mock implementation of this protocol:

import MockingKit
classMyMock:Mock,MyProtocol{
// You have to define a lazy reference for each function you want to mock
lazy vardoStuffRef=MockReference(doStuff)
// Functions must then call the reference to be recorded
func doStuff(int:Int, string:String)->String{call(doStuffRef, args:(int, string))}}

You can then use the mock to register function results, call functions and inspect recorded calls.

// Create a mock instance
letmock=MyMock()
// Register a result to be returned by doStuff
mock.registerResult(for: mock.doStuffRef){ args inString(args.1.reversed())}
// Calling doStuff will now return the pre-registered result
letresult= mock.doStuff(int:42, string:"string") // => "gnirts"
// You can now inspect calls made to doStuff
letcalls= mock.calls(to: \.doStuffRef) // => 1 item
calls[0].arguments.0 // => 42
calls[0].arguments.1 // => "string"
calls[0].result // => "gnirts"
mock.hasCalled(\.doStuffRef) // => true
mock.hasCalled(\.doStuffRef, numberOfTimes:1) // => true
mock.hasCalled(\.doStuffRef, numberOfTimes:2) // => false

For more information, please see the online documentation and getting started guide.

Documentation

The online documentation has articles, code examples etc. that let you overview the various parts of the library.

Demo Application

The demo app lets you explore the library on iOS and macOS. To try it out, just open and run the Demo project.

Support

You can sponsor this project on GitHub Sponsors or get in touch for paid support.

Contact

Feel free to reach out if you have questions or if you want to contribute in any way:

License

MockingKit is available under the MIT license. See the LICENSE file for more info.

About

MockingKit is a Swift mocking library that makes it easy to mock protocol implementations for unit tests and not yet implemented functionality. It lets you register function results, invoke method calls and inspect invokations.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

MockingKit Logo

VersionSwift 5.6Swift UIMIT LicenseTwitter: @danielsaidiMastodon: @danielsaidi@mastodon.social

About MockingKit

MockingKit is a Swift library that lets you mock protocols and classes, for instance when unit testing or mocking not yet implemented functionality.

MockingKit lets you create mock implementations of any protocol or mock sub classes any open base class, after which you can call functions, register function results and inspect all recorded calls.

MockingKit doesn't require any project configurations or build scripts, put any restrictions on your code or require you to structure it in any way. Just create a mock and you're good to go.

Installation

MockingKit can be installed with the Swift Package Manager:

https://github.com/danielsaidi/MockingKit.git

or with CocoaPods:

pod MockingKit

If you prefer to not have external dependencies, you can also just copy the source code into your app.

Supported Platforms

MockingKit supports iOS 13, macOS 10.15, tvOS 13 and watchOS 6.

Getting started

The online documentation has a getting started guide guide to help you get started with MockingKit.

In short, MockingKit lets you mock any protocols and open classes. For instance, consider this simple protocol:

protocolMyProtocol{func doStuff(int:Int, string:String)->String}

With MockingKit, you can easily create a mock implementation of this protocol:

import MockingKit
classMyMock:Mock,MyProtocol{
// You have to define a lazy reference for each function you want to mock
lazy vardoStuffRef=MockReference(doStuff)
// Functions must then call the reference to be recorded
func doStuff(int:Int, string:String)->String{call(doStuffRef, args:(int, string))}}

You can then use the mock to register function results, call functions and inspect recorded calls.

// Create a mock instance
letmock=MyMock()
// Register a result to be returned by doStuff
mock.registerResult(for: mock.doStuffRef){ args inString(args.1.reversed())}
// Calling doStuff will now return the pre-registered result
letresult= mock.doStuff(int:42, string:"string") // => "gnirts"
// You can now inspect calls made to doStuff
letcalls= mock.calls(to: \.doStuffRef) // => 1 item
calls[0].arguments.0 // => 42
calls[0].arguments.1 // => "string"
calls[0].result // => "gnirts"
mock.hasCalled(\.doStuffRef) // => true
mock.hasCalled(\.doStuffRef, numberOfTimes:1) // => true
mock.hasCalled(\.doStuffRef, numberOfTimes:2) // => false

For more information, please see the online documentation and getting started guide.

Documentation

The online documentation has articles, code examples etc. that let you overview the various parts of the library.

Demo Application

The demo app lets you explore the library on iOS and macOS. To try it out, just open and run the Demo project.

Support

You can sponsor this project on GitHub Sponsors or get in touch for paid support.

Contact

Feel free to reach out if you have questions or if you want to contribute in any way:

License

MockingKit is available under the MIT license. See the LICENSE file for more info.

About

MockingKit is a Swift mocking library that makes it easy to mock protocol implementations for unit tests and not yet implemented functionality. It lets you register function results, invoke method calls and inspect invokations.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MockingKit Logo

VersionSwift 5.6Swift UIMIT LicenseTwitter: @danielsaidiMastodon: @danielsaidi@mastodon.social

About MockingKit

MockingKit is a Swift library that lets you mock protocols and classes, for instance when unit testing or mocking not yet implemented functionality.

MockingKit lets you create mock implementations of any protocol or mock sub classes any open base class, after which you can call functions, register function results and inspect all recorded calls.

MockingKit doesn't require any project configurations or build scripts, put any restrictions on your code or require you to structure it in any way. Just create a mock and you're good to go.

Installation

MockingKit can be installed with the Swift Package Manager:

https://github.com/danielsaidi/MockingKit.git

or with CocoaPods:

pod MockingKit

If you prefer to not have external dependencies, you can also just copy the source code into your app.

Supported Platforms

MockingKit supports iOS 13, macOS 10.15, tvOS 13 and watchOS 6.

Getting started

The online documentation has a getting started guide guide to help you get started with MockingKit.

In short, MockingKit lets you mock any protocols and open classes. For instance, consider this simple protocol:

protocolMyProtocol{func doStuff(int:Int, string:String)->String}

With MockingKit, you can easily create a mock implementation of this protocol:

import MockingKit
classMyMock:Mock,MyProtocol{
// You have to define a lazy reference for each function you want to mock
lazy vardoStuffRef=MockReference(doStuff)
// Functions must then call the reference to be recorded
func doStuff(int:Int, string:String)->String{call(doStuffRef, args:(int, string))}}

You can then use the mock to register function results, call functions and inspect recorded calls.

// Create a mock instance
letmock=MyMock()
// Register a result to be returned by doStuff
mock.registerResult(for: mock.doStuffRef){ args inString(args.1.reversed())}
// Calling doStuff will now return the pre-registered result
letresult= mock.doStuff(int:42, string:"string") // => "gnirts"
// You can now inspect calls made to doStuff
letcalls= mock.calls(to: \.doStuffRef) // => 1 item
calls[0].arguments.0 // => 42
calls[0].arguments.1 // => "string"
calls[0].result // => "gnirts"
mock.hasCalled(\.doStuffRef) // => true
mock.hasCalled(\.doStuffRef, numberOfTimes:1) // => true
mock.hasCalled(\.doStuffRef, numberOfTimes:2) // => false

For more information, please see the online documentation and getting started guide.

Documentation

The online documentation has articles, code examples etc. that let you overview the various parts of the library.

Demo Application

The demo app lets you explore the library on iOS and macOS. To try it out, just open and run the Demo project.

Support

You can sponsor this project on GitHub Sponsors or get in touch for paid support.

Contact

Feel free to reach out if you have questions or if you want to contribute in any way:

License

MockingKit is available under the MIT license. See the LICENSE file for more info.

About

MockingKit is a Swift mocking library that makes it easy to mock protocol implementations for unit tests and not yet implemented functionality. It lets you register function results, invoke method calls and inspect invokations.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MockingKit Logo

VersionSwift 5.6Swift UIMIT LicenseTwitter: @danielsaidiMastodon: @danielsaidi@mastodon.social

About MockingKit

MockingKit is a Swift library that lets you mock protocols and classes, for instance when unit testing or mocking not yet implemented functionality.

MockingKit lets you create mock implementations of any protocol or mock sub classes any open base class, after which you can call functions, register function results and inspect all recorded calls.

MockingKit doesn't require any project configurations or build scripts, put any restrictions on your code or require you to structure it in any way. Just create a mock and you're good to go.

Installation

MockingKit can be installed with the Swift Package Manager:

https://github.com/danielsaidi/MockingKit.git

or with CocoaPods:

pod MockingKit

If you prefer to not have external dependencies, you can also just copy the source code into your app.

Supported Platforms

MockingKit supports iOS 13, macOS 10.15, tvOS 13 and watchOS 6.

Getting started

The online documentation has a getting started guide guide to help you get started with MockingKit.

In short, MockingKit lets you mock any protocols and open classes. For instance, consider this simple protocol:

protocolMyProtocol{func doStuff(int:Int, string:String)->String}

With MockingKit, you can easily create a mock implementation of this protocol:

import MockingKit
classMyMock:Mock,MyProtocol{
// You have to define a lazy reference for each function you want to mock
lazy vardoStuffRef=MockReference(doStuff)
// Functions must then call the reference to be recorded
func doStuff(int:Int, string:String)->String{call(doStuffRef, args:(int, string))}}

You can then use the mock to register function results, call functions and inspect recorded calls.

// Create a mock instance
letmock=MyMock()
// Register a result to be returned by doStuff
mock.registerResult(for: mock.doStuffRef){ args inString(args.1.reversed())}
// Calling doStuff will now return the pre-registered result
letresult= mock.doStuff(int:42, string:"string") // => "gnirts"
// You can now inspect calls made to doStuff
letcalls= mock.calls(to: \.doStuffRef) // => 1 item
calls[0].arguments.0 // => 42
calls[0].arguments.1 // => "string"
calls[0].result // => "gnirts"
mock.hasCalled(\.doStuffRef) // => true
mock.hasCalled(\.doStuffRef, numberOfTimes:1) // => true
mock.hasCalled(\.doStuffRef, numberOfTimes:2) // => false

For more information, please see the online documentation and getting started guide.

Documentation

The online documentation has articles, code examples etc. that let you overview the various parts of the library.

Demo Application

The demo app lets you explore the library on iOS and macOS. To try it out, just open and run the Demo project.

Support

You can sponsor this project on GitHub Sponsors or get in touch for paid support.

Contact

Feel free to reach out if you have questions or if you want to contribute in any way:

License

MockingKit is available under the MIT license. See the LICENSE file for more info.

About

MockingKit is a Swift mocking library that makes it easy to mock protocol implementations for unit tests and not yet implemented functionality. It lets you register function results, invoke method calls and inspect invokations.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

MockingKit Logo

VersionSwift 5.6Swift UIMIT LicenseTwitter: @danielsaidiMastodon: @danielsaidi@mastodon.social

About MockingKit

MockingKit is a Swift library that lets you mock protocols and classes, for instance when unit testing or mocking not yet implemented functionality.

MockingKit lets you create mock implementations of any protocol or mock sub classes any open base class, after which you can call functions, register function results and inspect all recorded calls.

MockingKit doesn't require any project configurations or build scripts, put any restrictions on your code or require you to structure it in any way. Just create a mock and you're good to go.

Installation

MockingKit can be installed with the Swift Package Manager:

https://github.com/danielsaidi/MockingKit.git

or with CocoaPods:

pod MockingKit

If you prefer to not have external dependencies, you can also just copy the source code into your app.

Supported Platforms

MockingKit supports iOS 13, macOS 10.15, tvOS 13 and watchOS 6.

Getting started

The online documentation has a getting started guide guide to help you get started with MockingKit.

In short, MockingKit lets you mock any protocols and open classes. For instance, consider this simple protocol:

protocolMyProtocol{func doStuff(int:Int, string:String)->String}

With MockingKit, you can easily create a mock implementation of this protocol:

import MockingKit
classMyMock:Mock,MyProtocol{
// You have to define a lazy reference for each function you want to mock
lazy vardoStuffRef=MockReference(doStuff)
// Functions must then call the reference to be recorded
func doStuff(int:Int, string:String)->String{call(doStuffRef, args:(int, string))}}

You can then use the mock to register function results, call functions and inspect recorded calls.

// Create a mock instance
letmock=MyMock()
// Register a result to be returned by doStuff
mock.registerResult(for: mock.doStuffRef){ args inString(args.1.reversed())}
// Calling doStuff will now return the pre-registered result
letresult= mock.doStuff(int:42, string:"string") // => "gnirts"
// You can now inspect calls made to doStuff
letcalls= mock.calls(to: \.doStuffRef) // => 1 item
calls[0].arguments.0 // => 42
calls[0].arguments.1 // => "string"
calls[0].result // => "gnirts"
mock.hasCalled(\.doStuffRef) // => true
mock.hasCalled(\.doStuffRef, numberOfTimes:1) // => true
mock.hasCalled(\.doStuffRef, numberOfTimes:2) // => false

For more information, please see the online documentation and getting started guide.

Documentation

The online documentation has articles, code examples etc. that let you overview the various parts of the library.

Demo Application

The demo app lets you explore the library on iOS and macOS. To try it out, just open and run the Demo project.

Support

You can sponsor this project on GitHub Sponsors or get in touch for paid support.

Contact

Feel free to reach out if you have questions or if you want to contribute in any way:

License

MockingKit is available under the MIT license. See the LICENSE file for more info.

About

MockingKit is a Swift mocking library that makes it easy to mock protocol implementations for unit tests and not yet implemented functionality. It lets you register function results, invoke method calls and inspect invokations.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MockingKit Logo

VersionSwift 5.6Swift UIMIT LicenseTwitter: @danielsaidiMastodon: @danielsaidi@mastodon.social

About MockingKit

MockingKit is a Swift library that lets you mock protocols and classes, for instance when unit testing or mocking not yet implemented functionality.

MockingKit lets you create mock implementations of any protocol or mock sub classes any open base class, after which you can call functions, register function results and inspect all recorded calls.

MockingKit doesn't require any project configurations or build scripts, put any restrictions on your code or require you to structure it in any way. Just create a mock and you're good to go.

Installation

MockingKit can be installed with the Swift Package Manager:

https://github.com/danielsaidi/MockingKit.git

or with CocoaPods:

pod MockingKit

If you prefer to not have external dependencies, you can also just copy the source code into your app.

Supported Platforms

MockingKit supports iOS 13, macOS 10.15, tvOS 13 and watchOS 6.

Getting started

The online documentation has a getting started guide guide to help you get started with MockingKit.

In short, MockingKit lets you mock any protocols and open classes. For instance, consider this simple protocol:

protocolMyProtocol{func doStuff(int:Int, string:String)->String}

With MockingKit, you can easily create a mock implementation of this protocol:

import MockingKit
classMyMock:Mock,MyProtocol{
// You have to define a lazy reference for each function you want to mock
lazy vardoStuffRef=MockReference(doStuff)
// Functions must then call the reference to be recorded
func doStuff(int:Int, string:String)->String{call(doStuffRef, args:(int, string))}}

You can then use the mock to register function results, call functions and inspect recorded calls.

// Create a mock instance
letmock=MyMock()
// Register a result to be returned by doStuff
mock.registerResult(for: mock.doStuffRef){ args inString(args.1.reversed())}
// Calling doStuff will now return the pre-registered result
letresult= mock.doStuff(int:42, string:"string") // => "gnirts"
// You can now inspect calls made to doStuff
letcalls= mock.calls(to: \.doStuffRef) // => 1 item
calls[0].arguments.0 // => 42
calls[0].arguments.1 // => "string"
calls[0].result // => "gnirts"
mock.hasCalled(\.doStuffRef) // => true
mock.hasCalled(\.doStuffRef, numberOfTimes:1) // => true
mock.hasCalled(\.doStuffRef, numberOfTimes:2) // => false

For more information, please see the online documentation and getting started guide.

Documentation

The online documentation has articles, code examples etc. that let you overview the various parts of the library.

Demo Application

The demo app lets you explore the library on iOS and macOS. To try it out, just open and run the Demo project.

Support

You can sponsor this project on GitHub Sponsors or get in touch for paid support.

Contact

Feel free to reach out if you have questions or if you want to contribute in any way:

License

MockingKit is available under the MIT license. See the LICENSE file for more info.

About

MockingKit is a Swift mocking library that makes it easy to mock protocol implementations for unit tests and not yet implemented functionality. It lets you register function results, invoke method calls and inspect invokations.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MockingKit Logo

VersionSwift 5.6Swift UIMIT LicenseTwitter: @danielsaidiMastodon: @danielsaidi@mastodon.social

About MockingKit

MockingKit is a Swift library that lets you mock protocols and classes, for instance when unit testing or mocking not yet implemented functionality.

MockingKit lets you create mock implementations of any protocol or mock sub classes any open base class, after which you can call functions, register function results and inspect all recorded calls.

MockingKit doesn't require any project configurations or build scripts, put any restrictions on your code or require you to structure it in any way. Just create a mock and you're good to go.

Installation

MockingKit can be installed with the Swift Package Manager:

https://github.com/danielsaidi/MockingKit.git

or with CocoaPods:

pod MockingKit

If you prefer to not have external dependencies, you can also just copy the source code into your app.

Supported Platforms

MockingKit supports iOS 13, macOS 10.15, tvOS 13 and watchOS 6.

Getting started

The online documentation has a getting started guide guide to help you get started with MockingKit.

In short, MockingKit lets you mock any protocols and open classes. For instance, consider this simple protocol:

protocolMyProtocol{func doStuff(int:Int, string:String)->String}

With MockingKit, you can easily create a mock implementation of this protocol:

import MockingKit
classMyMock:Mock,MyProtocol{
// You have to define a lazy reference for each function you want to mock
lazy vardoStuffRef=MockReference(doStuff)
// Functions must then call the reference to be recorded
func doStuff(int:Int, string:String)->String{call(doStuffRef, args:(int, string))}}

You can then use the mock to register function results, call functions and inspect recorded calls.

// Create a mock instance
letmock=MyMock()
// Register a result to be returned by doStuff
mock.registerResult(for: mock.doStuffRef){ args inString(args.1.reversed())}
// Calling doStuff will now return the pre-registered result
letresult= mock.doStuff(int:42, string:"string") // => "gnirts"
// You can now inspect calls made to doStuff
letcalls= mock.calls(to: \.doStuffRef) // => 1 item
calls[0].arguments.0 // => 42
calls[0].arguments.1 // => "string"
calls[0].result // => "gnirts"
mock.hasCalled(\.doStuffRef) // => true
mock.hasCalled(\.doStuffRef, numberOfTimes:1) // => true
mock.hasCalled(\.doStuffRef, numberOfTimes:2) // => false

For more information, please see the online documentation and getting started guide.

Documentation

The online documentation has articles, code examples etc. that let you overview the various parts of the library.

Demo Application

The demo app lets you explore the library on iOS and macOS. To try it out, just open and run the Demo project.

Support

You can sponsor this project on GitHub Sponsors or get in touch for paid support.

Contact

Feel free to reach out if you have questions or if you want to contribute in any way:

License

MockingKit is available under the MIT license. See the LICENSE file for more info.

About

MockingKit is a Swift mocking library that makes it easy to mock protocol implementations for unit tests and not yet implemented functionality. It lets you register function results, invoke method calls and inspect invokations.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

MockingKit Logo

VersionSwift 5.6Swift UIMIT LicenseTwitter: @danielsaidiMastodon: @danielsaidi@mastodon.social

About MockingKit

MockingKit is a Swift library that lets you mock protocols and classes, for instance when unit testing or mocking not yet implemented functionality.

MockingKit lets you create mock implementations of any protocol or mock sub classes any open base class, after which you can call functions, register function results and inspect all recorded calls.

MockingKit doesn't require any project configurations or build scripts, put any restrictions on your code or require you to structure it in any way. Just create a mock and you're good to go.

Installation

MockingKit can be installed with the Swift Package Manager:

https://github.com/danielsaidi/MockingKit.git

or with CocoaPods:

pod MockingKit

If you prefer to not have external dependencies, you can also just copy the source code into your app.

Supported Platforms

MockingKit supports iOS 13, macOS 10.15, tvOS 13 and watchOS 6.

Getting started

The online documentation has a getting started guide guide to help you get started with MockingKit.

In short, MockingKit lets you mock any protocols and open classes. For instance, consider this simple protocol:

protocolMyProtocol{func doStuff(int:Int, string:String)->String}

With MockingKit, you can easily create a mock implementation of this protocol:

import MockingKit
classMyMock:Mock,MyProtocol{
// You have to define a lazy reference for each function you want to mock
lazy vardoStuffRef=MockReference(doStuff)
// Functions must then call the reference to be recorded
func doStuff(int:Int, string:String)->String{call(doStuffRef, args:(int, string))}}

You can then use the mock to register function results, call functions and inspect recorded calls.

// Create a mock instance
letmock=MyMock()
// Register a result to be returned by doStuff
mock.registerResult(for: mock.doStuffRef){ args inString(args.1.reversed())}
// Calling doStuff will now return the pre-registered result
letresult= mock.doStuff(int:42, string:"string") // => "gnirts"
// You can now inspect calls made to doStuff
letcalls= mock.calls(to: \.doStuffRef) // => 1 item
calls[0].arguments.0 // => 42
calls[0].arguments.1 // => "string"
calls[0].result // => "gnirts"
mock.hasCalled(\.doStuffRef) // => true
mock.hasCalled(\.doStuffRef, numberOfTimes:1) // => true
mock.hasCalled(\.doStuffRef, numberOfTimes:2) // => false

For more information, please see the online documentation and getting started guide.

Documentation

The online documentation has articles, code examples etc. that let you overview the various parts of the library.

Demo Application

The demo app lets you explore the library on iOS and macOS. To try it out, just open and run the Demo project.

Support

You can sponsor this project on GitHub Sponsors or get in touch for paid support.

Contact

Feel free to reach out if you have questions or if you want to contribute in any way:

License

MockingKit is available under the MIT license. See the LICENSE file for more info.

About

MockingKit is a Swift mocking library that makes it easy to mock protocol implementations for unit tests and not yet implemented functionality. It lets you register function results, invoke method calls and inspect invokations.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages