{"__v":9,"_id":"56ac1ec3aa91300d00bede9b","category":{"__v":7,"_id":"5447ed230319802200fc0702","pages":["5447ef8d0319802200fc0713","56ac1ec3aa91300d00bede9b","56ac213d0bbe170d00f11272","56ac21d2c69a430d008aabb3","56b1401d4b05c50d001ceb3b","56c72ca5862f940d0056475d","56c75ec053cafe0d00a53d7b"],"project":"54471fc9e12a270800028adc","version":"54471fc9e12a270800028adf","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2014-10-22T17:45:07.793Z","from_sync":false,"order":6,"slug":"convention-system","title":"Convention System"},"project":"54471fc9e12a270800028adc","user":"54471f91beb6320800da6f75","version":{"__v":10,"_id":"54471fc9e12a270800028adf","project":"54471fc9e12a270800028adc","createdAt":"2014-10-22T03:08:57.750Z","releaseDate":"2014-10-22T03:08:57.750Z","categories":["54471fc9e12a270800028ae0","5447b9e7b96a63140077d747","5447be130319802200fc0620","5447ed118d7af31a00dd411c","5447ed230319802200fc0702","5448524c4544c30800241f41","544854504544c30800241f4d","544854af4544c30800241f50","544854e74544c30800241f51","54485557c1b42e08005b82bf"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"1.0.0","version":"1.0"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2016-01-30T02:24:03.167Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":1,"body":"Before you can define conventions for your specs, you need to add a SpecsForConfiguration class to your spec project.  In the root of your project (or in a subfolder if you only want the conventions to apply to a subset of your specs), create a new class named \"Configuration.\"   Make this class derive from the SpecsFor.SpecsForConfiguration class, and decorate it with the NUnit SetUpFixture attribute:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"using NUnit.Framework;\\nusing SpecsFor.Configuration;\\n\\nnamespace Conventions.Basics\\n{\\n    [SetUpFixture]\\n    public class Configuration : SpecsForConfiguration\\n    {\\n    }\\n}\",\n      \"language\": \"csharp\"\n    }\n  ]\n}\n[/block]\nYou can use the helper methods on the base class to define your conventions.  You'll do this within a constructor on your Configuration class.  \n\nThere are three methods you can use to define your conventions:\n\n* WhenTestingAnything - Begins defining a convention that will apply to **all** of your SpecsFor specs.  Note that any specs that do not derive from SpecsFor<T> will not have this convention applied to them.\n* WhenTesting - Begins a convention that applies to all specs that satisfy a specified filter.  For example: WhenTesting(s => s.Name.Contains(\"Foo\"))  \n* WhenTesting<T> - Begins a convention that applies to all specs that can be cast to type T.  \n\nEach of the above methods returns a fluent builder that you can use to either attach behaviors or customize how the spec's [SUT](doc:the-system-under-test-sut) is instantiated.\n\n* EnrichWith<T> - Applies the specified [behavior](doc:creating-a-behavior) to specs matching the convention.\n* CreateClassUnderTestingUsing - Uses the specified factory function to create the SUT for specs matching the convention. \n\n[Continue on to see how to define a behavior that applies to all classes](doc:applying-a-behavior-to-all-specs).","excerpt":"","slug":"defining-conventions","type":"basic","title":"Creating a configuration class"}

Creating a configuration class


Before you can define conventions for your specs, you need to add a SpecsForConfiguration class to your spec project. In the root of your project (or in a subfolder if you only want the conventions to apply to a subset of your specs), create a new class named "Configuration." Make this class derive from the SpecsFor.SpecsForConfiguration class, and decorate it with the NUnit SetUpFixture attribute: [block:code] { "codes": [ { "code": "using NUnit.Framework;\nusing SpecsFor.Configuration;\n\nnamespace Conventions.Basics\n{\n [SetUpFixture]\n public class Configuration : SpecsForConfiguration\n {\n }\n}", "language": "csharp" } ] } [/block] You can use the helper methods on the base class to define your conventions. You'll do this within a constructor on your Configuration class. There are three methods you can use to define your conventions: * WhenTestingAnything - Begins defining a convention that will apply to **all** of your SpecsFor specs. Note that any specs that do not derive from SpecsFor<T> will not have this convention applied to them. * WhenTesting - Begins a convention that applies to all specs that satisfy a specified filter. For example: WhenTesting(s => s.Name.Contains("Foo")) * WhenTesting<T> - Begins a convention that applies to all specs that can be cast to type T. Each of the above methods returns a fluent builder that you can use to either attach behaviors or customize how the spec's [SUT](doc:the-system-under-test-sut) is instantiated. * EnrichWith<T> - Applies the specified [behavior](doc:creating-a-behavior) to specs matching the convention. * CreateClassUnderTestingUsing - Uses the specified factory function to create the SUT for specs matching the convention. [Continue on to see how to define a behavior that applies to all classes](doc:applying-a-behavior-to-all-specs).