-
Notifications
You must be signed in to change notification settings - Fork 49
Open
Description
As a developer I want get correctly generated mocks when using the new async keyword from the concurrency feature introduced with Swift 5.5.
Using the Version 0.27 (3) I experienced the following issue: When mocking an async function, then...
- the async keyword is not added to the mocked function
- the return value is ignored
- the
throwskeyword is ignored
// protocol
func myAsync() async
// current mock
var invokedMyAsync = false
var invokedMyAsyncCount = 0
func myAsync() {
invokedMyAsync = true
invokedMyAsyncCount += 1
}
// expected mock
var invokedMyAsync = false
var invokedMyAsyncCount = 0
func myAsync() async {
invokedMyAsync = true
invokedMyAsyncCount += 1
}// protocol
func myAsyncReturns() async -> MyObject
// current mock
var invokedMyAsyncReturns = false
var invokedMyAsyncReturnsCount = 0
func myAsyncReturns() {
invokedMyAsyncReturns = true
invokedMyAsyncReturnsCount += 1
}
// expected mock
var invokedMyAsyncReturns = false
var invokedMyAsyncReturnsCount = 0
var stubbedMyAsyncReturnsResult: MyObject!
func myAsyncReturns() async -> MyObject {
invokedMyAsyncReturns = true
invokedMyAsyncReturnsCount += 1
return stubbedMyAsyncReturnsResult
}// protocol
func myAsyncThrows() async throws
// current mock
var invokedMyAsyncThrows = false
var invokedMyAsyncThrowsCount = 0
func myAsyncThrows() {
invokedMyAsyncThrows = true
invokedMyAsyncThrowsCount += 1
}
// expected mock
var invokedMyAsyncThrows = false
var invokedMyAsyncThrowsCount = 0
var invokedMyAsyncThrowsError: Error?
func myAsyncThrows() async throws {
invokedMyAsyncThrows = true
invokedMyAsyncThrowsCount += 1
if let error = invokedMyAsyncThrowsError {
throw error
}
}Metadata
Metadata
Assignees
Labels
No labels