An open API service indexing awesome lists of open source software.

https://github.com/alexsniffin/go-swap

Testing utility for swapping out private field members without the need of dependency inversion of control
https://github.com/alexsniffin/go-swap

go testing

Last synced: 6 months ago
JSON representation

Testing utility for swapping out private field members without the need of dependency inversion of control

Awesome Lists containing this project

README

          

# go-swap

Testing utility for swapping out private field members without the need of dependency inversion of control.

### Example
```go
ex := example{
nested: nestedFields{
subPrivateField: "old",
},
}

myPointer := swap.Init(&ex).
Find("nested", func(p unsafe.Pointer) interface{} {
return (*nestedFields)(p)
}).
Find("subPrivateFieldOne", func(p unsafe.Pointer) interface{} {
return (*string)(p)
}).Pointer()

// Assert type
str := myPointer.(*string)

// Reassign new value to pointer
*str = "new"

// swap.example{nested:swap.nestedFields{subPrivateFieldOne:"old", subPrivateFieldTwo:0, subPrivateFieldThree:0, subPrivateFieldFour:0, subPrivateFieldFive:false, subPrivateFieldSix:0, subPrivateFieldSeven:0}}
// swap.example{nested:swap.nestedFields{subPrivateFieldOne:"new", subPrivateFieldTwo:0, subPrivateFieldThree:0, subPrivateFieldFour:0, subPrivateFieldFive:false, subPrivateFieldSix:0, subPrivateFieldSeven:0}}

```