TILT- Docker with Ductus.FluentDocker–part 23
I have already tests with Sqlite – however, it will be better to try tests with a real SqlServer .
One of the way to have a sql server is to have docker – but how to start docker with sql server any time ?
One of answers is Ductus.FluentDocker – https://www.nuget.org/packages/Ductus.FluentDocker – and this is the code to start SqlServer:
public override void StartDatabase() { //string guid = Guid.NewGuid().ToString("N"); string uniqueId = Interlocked.Increment(ref uniq).ToString(); //Guid.NewGuid().ToString("N"); container = new Builder() .UseContainer() .WithName("sql" + uniqueId) .UseImage("mcr.microsoft.com/mssql/server:2022-latest") .ExposePort(1433, 1433) .WithEnvironment("SA_PASSWORD=<YourStrong@Passw0rd>", "ACCEPT_EULA=Y") .WaitForMessageInLog("Starting up database 'tempdb'.", TimeSpan.FromSeconds(30)) .Build() .Start(); ConstructServiceProvider(); } static int uniq = 0;
I needed also a Base class for consolidating code between sql server and sqlite
-
generating DI with for both with different context
-
The Steps are the same = so base class
-
The tests are the same= so base class
So this is the base class:
public abstract partial class RealDBTests: FeatureFixture { [SetUp] public void Start() { StartDatabase(); } [TearDown] public void Stop() { StopDatabase(); } public abstract void StartDatabase(); public abstract void StopDatabase(); public abstract IServiceCollection AddDB( IServiceCollection sc); public void ConstructServiceProvider() { serviceProvider = AddDB(new ServiceCollection()) //more DI } }
Also , GitHub actions supports docker – so now TILT has a complete testing also in SqlServer.
Tools used
Docker
Visual Studio
Ductus.FluentDocker
Leave a Reply