this post was submitted on 04 Aug 2023
2 points (100.0% liked)
Rust
6044 readers
6 users here now
Welcome to the Rust community! This is a place to discuss about the Rust programming language.
Wormhole
Credits
- The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
I don't think you can mock a struct. I'm guessing a mock would be a different struct type with the same fields, or a subset of fields. But since Rust types are nominative, not structural, you can't substitute one struct type with another even if the data is identical.
When you need a struct for a test you create a value of the original type. Some problems that might come up are,
For the first two problems one option is to use conditional compilation to create test-only constructors that bypass code you don't want to run, or that have broader visibility.
For the last problem you might want to refactor the code to use traits which you can create mock/test implementations for. Or you might change the struct to make the problematic data optional, or lazily initialized.
This is a great answer, thanks. I'll have to look more into conditional compilation. That's new to me.
A few days later, but keep in mind that if you write your tests in the module you declare your structs, you'll have access to its "private" (non-
pub
) members since those are technically module scoped (default scope ispub(self)
).Playground