Crate mssql_testing

Crate mssql_testing 

Source
Expand description

§mssql-testing

Test infrastructure for SQL Server driver development.

This crate provides utilities for integration testing against SQL Server instances, including testcontainers support and a mock TDS server.

§Features

  • SQL Server container management via testcontainers
  • Mock TDS server for unit tests (no Docker required)
  • Packet recording and replay for regression tests
  • Test fixture utilities
  • Connection helpers for tests

§Mock Server Example

use mssql_testing::mock_server::{MockTdsServer, MockResponse, MockColumn, ScalarValue};

#[tokio::test]
async fn test_with_mock_server() {
    // Create a mock server with pre-configured responses
    let server = MockTdsServer::builder()
        .with_response(
            "SELECT * FROM users WHERE id = 1",
            MockResponse::rows(
                vec![MockColumn::int("id"), MockColumn::nvarchar("name", 50)],
                vec![vec![ScalarValue::Int(1), ScalarValue::String("Alice".into())]],
            ),
        )
        .build()
        .await
        .unwrap();

    // Connect your client to server.addr()
    let addr = server.addr();
    // ...
}

§Container Example

use mssql_testing::SqlServerContainer;
use testcontainers::clients::Cli;

#[tokio::test]
async fn test_with_real_server() {
    let docker = Cli::default();
    let container = docker.run(SqlServerContainer::default());
    let port = container.get_host_port_ipv4(1433);
    // Connect to localhost:port...
}

Re-exports§

pub use container::SqlServerContainer;
pub use mock_server::MockColumn;
pub use mock_server::MockResponse;
pub use mock_server::MockServerBuilder;
pub use mock_server::MockServerConfig;
pub use mock_server::MockServerError;
pub use mock_server::MockTdsServer;
pub use mock_server::PacketRecorder;
pub use mock_server::RecordedPacket;
pub use mock_server::ScalarValue;

Modules§

container
SQL Server container support via testcontainers.
fixtures
Test fixture utilities.
mock_server
Mock TDS server for unit testing.