React Testing Library encourages testing behavior, not implementation. Here’s how to write effective React tests. Setup Basic Test Async Testing Guidelines Query by role, label, or text – not test IDs Test user behavior, not implementation Avoid testing internal state References React Testing Library
Read more โNode.js Error Handling: Best Practices
Node.js error handling can be tricky, especially with async code. Here’s how to do it properly. Sync vs Async Errors Express Error Middleware Custom Error Classes References Express Error Handling
Read more โAzure DevOps Service Connections and Managed Identities
Service connections let Azure DevOps deploy to Azure resources. Getting the security right is important. Here’s how to set them up properly. Creating a Service Connection Project Settings โ Service connections โ New โ Azure Resource Manager Automatic: Creates service principal for you Manual: Use existing service principal Managed Identity: For self-hosted agents Best Practices […]
Read more โClean Architecture in .NET: Practical Implementation
Clean Architecture keeps your business logic independent of frameworks and databases. Here’s how I implement it in .NET projects. The Layers Domain: Entities, value objects, domain events Application: Use cases, interfaces, DTOs Infrastructure: Database, external services WebAPI: Controllers, middleware Project Structure Dependency Rule Dependencies point inward. Domain has no dependencies. Application depends on Domain. Infrastructure […]
Read more โOffice 365 CLI: Automating SharePoint Administration
The Office 365 CLI lets you manage SharePoint, Teams, and other services from the command line. Perfect for automation and scripting. Installation Login Common Commands Use Cases Automated provisioning Bulk operations CI/CD pipelines Scheduled maintenance References CLI for Microsoft 365
Read more โSQL Server 2019: What’s New for Developers
SQL Server 2019 brings big data clusters, improved query processing, and better Linux support. Here are the highlights for developers. Intelligent Query Processing Batch mode on rowstore: Faster analytical queries Memory grant feedback: Automatic memory adjustments Table variable deferred compilation: Better estimates New T-SQL Features Accelerated Database Recovery Near-instant recovery regardless of transaction log size. […]
Read more โ