Skip to content

Refactor tools package, to enable dependency injection of run method #266

Description

We need a better way of unit testing the sqlcmd code to launch 3rd party UI tools, like ADS and SSMS.

Comment from code reviews:

if !test.IsRunningInTestExecutor() {
	return t.tool.Run(args)
} else {
	return 0, nil
}

"this is another opportunity to introduce dependency inversion where the tests can inject an alternate Run method for a tool. That will enable the tests to validate the correct args are passed based on the current config.
It also allows removal of test-environment-specific code from the product code. " - David

"Agree, this is a good idea and great feedback (I'd become a bit stuck on approach here). I've entered an issue to refactor this package. We've been asked to add SSMS support as well, so when I do that, I'll also refactor with the appropriate interfaces to enable DI here." - Stuart

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions