{"id":13655327,"url":"https://github.com/moq/Moq.AutoMocker","last_synced_at":"2025-04-23T12:33:19.983Z","repository":{"id":3381059,"uuid":"4429005","full_name":"moq/Moq.AutoMocker","owner":"moq","description":"An auto-mocking IoC container for Moq","archived":false,"fork":false,"pushed_at":"2024-04-29T06:30:59.000Z","size":795,"stargazers_count":377,"open_issues_count":15,"forks_count":54,"subscribers_count":12,"default_branch":"master","last_synced_at":"2024-05-01T21:17:45.280Z","etag":null,"topics":["hacktoberfest"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/moq.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["adamhewitt627","keboo"]}},"created_at":"2012-05-24T05:12:08.000Z","updated_at":"2024-05-13T21:51:13.438Z","dependencies_parsed_at":"2023-01-13T12:28:30.568Z","dependency_job_id":"3eca836b-ff77-4205-92f2-a22fbb985a0a","html_url":"https://github.com/moq/Moq.AutoMocker","commit_stats":{"total_commits":240,"total_committers":31,"mean_commits":7.741935483870968,"dds":0.6791666666666667,"last_synced_commit":"a9ea4f6bb78d0dea7f8e404ddb175fb444d13ebb"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moq%2FMoq.AutoMocker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moq%2FMoq.AutoMocker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moq%2FMoq.AutoMocker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moq%2FMoq.AutoMocker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moq","download_url":"https://codeload.github.com/moq/Moq.AutoMocker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250435341,"owners_count":21430261,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest"],"created_at":"2024-08-02T03:01:02.889Z","updated_at":"2025-04-23T12:33:14.967Z","avatar_url":"https://github.com/moq.png","language":"C#","funding_links":["https://github.com/sponsors/adamhewitt627","https://github.com/sponsors/keboo"],"categories":["Testing and Mocking"],"sub_categories":[],"readme":"# Moq.AutoMock  ![Continuous](https://github.com/moq/Moq.AutoMocker/workflows/Continuous/badge.svg) [![NuGet Status](https://img.shields.io/nuget/v/Moq.AutoMock.svg?style=flat)](https://www.nuget.org/packages/Moq.AutoMock)\r\n\r\nAn automocking container for Moq. Use this if you're invested in your IoC\r\ncontainer and want to decouple your unit tests from changes to their \r\nconstructor arguments.\r\n\r\nUsage\r\n======\r\n\r\nSimplest usage is to build an instance that you can unit test.\r\n\r\n```csharp\r\nvar mocker = new AutoMocker();\r\nvar car = mocker.CreateInstance\u003cCar\u003e();\r\n\r\ncar.DriveTrain.ShouldNotBeNull();\r\ncar.DriveTrain.ShouldImplement\u003cIDriveTrain\u003e();\r\nMock\u003cIDriveTrain\u003e mock = Mock.Get(car.DriveTrain);\r\n```\r\n\r\nIf you have a special instance that you need to use, you can register it\r\nwith `.Use(...)`. This is very similar to registrations in a regular IoC\r\ncontainer (i.e. `For\u003cIService\u003e().Use(x)` in StructureMap).\r\n\r\n```csharp\r\nvar mocker = new AutoMocker();\r\n\r\nmocker.Use\u003cIDriveTrain\u003e(new DriveTrain());\r\n// OR, setup a Mock\r\nmocker.Use\u003cIDriveTrain\u003e(x =\u003e x.Shaft.Length == 5);\r\n\r\nvar car = mocker.CreateInstance\u003cCar\u003e();\r\n```\r\n\r\nExtracting Mocks\r\n----------------\r\n\r\nAt some point you might need to get to a mock that was auto-generated. For\r\nthis, use the `.Get\u003c\u003e()` or `.GetMock\u003c\u003e()` methods.\r\n\r\n```csharp\r\nvar mocker = new AutoMocker();\r\n\r\n// Let's say you have a setup that needs verifying\r\nmocker.Use\u003cIDriveTrain\u003e(x =\u003e x.Accelerate(42) == true);\r\n\r\nvar car = mocker.CreateInstance\u003cCar\u003e();\r\ncar.Accelerate(42);\r\n\r\n// Then extract \u0026 verify\r\nvar driveTrainMock = mocker.GetMock\u003cIDriveTrain\u003e();\r\ndriveTrainMock.VerifyAll();\r\n```\r\n\r\nAlternately, there's an even faster way to verify all mocks in the container:\r\n\r\n```csharp\r\nvar mocker = new AutoMocker();\r\nmocker.Use\u003cIDriveTrain\u003e(x =\u003e x.Accelerate(42) == true);\r\n\r\nvar car = mocker.CreateInstance\u003cCar\u003e();\r\ncar.Accelerate(42);\r\n\r\n// This method verifies all mocks in the container\r\nmocker.VerifyAll();\r\n```\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoq%2FMoq.AutoMocker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoq%2FMoq.AutoMocker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoq%2FMoq.AutoMocker/lists"}