Expanded trait error message to include list of defined traits. - #1824
Open
iannorriswork wants to merge 7 commits into
Open
Expanded trait error message to include list of defined traits.#1824iannorriswork wants to merge 7 commits into
iannorriswork wants to merge 7 commits into
Conversation
vburzynski
reviewed
Jul 15, 2026
vburzynski
left a comment
Contributor
There was a problem hiding this comment.
Added some initial thoughts 😎. So far this looks great overall.
vburzynski
reviewed
Jul 15, 2026
vburzynski
left a comment
Contributor
There was a problem hiding this comment.
Looks good on a scan through. 😎
I think I'd like to allow @neilvcarvalho a chance to review (he opened the related issues) and review the specs with some more focus review the specs closer after the Hack Space.
Contributor
|
Just wanted to pop in and say I still have this on my radar to review. Things have been a bit busy after getting back from rubyconf 😆 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes: #1727, building off of #1732, but preserving DidYouMean behavior in traits as well.
Expands trait error messages to include a list of the factory's defined traits.
Included
The message now includes: Registered traits: [:trait_1, :trait_2, :trait_3]
Example
Internal Definition Call
factory: :user
defined traits: :accessible_trait
error: internal reference to a missing trait :inaccessible_trait
Error Message:
Trait not registered: "inaccessible_trait". Registered traits: [:accessible_trait]. Referenced within "user" definition
User Trait Specified
factory: :user
defined traits: :accessible_trait
error: user calls an non-existent trait with build(:user, :missing_trait)
Error Message:
Trait not registered: "missing_trait". Registered traits: [:accessible_trait]
Note
When the error is because a missing trait was called from within a factory's definition, the message still includes the original:
Referenced within "user" definition
Changes
lib/factory_bot/definition.rb
error-rescue moved from :base_traits to :trait_by_name to catch both definition and calling errors.
spec/acceptance/enum_traits_spec.rb
updated specs for new error message layout.
spec/acceptance/traits_spec.rb updated specs for new error message layout. added new use-case tests with:
no registered traits
single registered trait
multiple registered traits
multiple registered traits through multiple inheritance
trait DidYouMean tests