Skip to content

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

Open
@stuartpa

Description

@stuartpa

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions