-
Notifications
You must be signed in to change notification settings - Fork 275
/
MissingInstanceTester.cs
42 lines (36 loc) · 1.57 KB
/
MissingInstanceTester.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
using System;
using NUnit.Framework;
using StructureMap.Pipeline;
using StructureMap.Testing.Widget;
namespace StructureMap.Testing.Pipeline
{
[TestFixture]
public class MissingInstanceTester
{
[Test]
public void returns_missing_instance_if_it_exists_and_the_requested_instance_is_not_found()
{
var factory = new InstanceFactory(typeof (IWidget));
var missing = new LiteralInstance(new AWidget());
factory.MissingInstance = missing;
factory.FindInstance("anything").ShouldBeTheSameAs(missing);
factory.FindInstance(Guid.NewGuid().ToString()).ShouldBeTheSameAs(missing);
}
[Test]
public void configure_and_use_missing_instance()
{
// If a user should happen to ask for a Rule by name
// that does not exist, StructureMap will use an Instance
// that builds a "ColorRule" object using the
// IContext.RequestedName property
var container = new Container(x =>
{
x.ForRequestedType<Rule>().MissingNamedInstanceIs
.ConstructedBy(context => new ColorRule(context.RequestedName));
});
container.GetInstance<Rule>("red").ShouldBeOfType<ColorRule>().Color.ShouldEqual("red");
container.GetInstance<Rule>("green").ShouldBeOfType<ColorRule>().Color.ShouldEqual("green");
container.GetInstance<Rule>("blue").ShouldBeOfType<ColorRule>().Color.ShouldEqual("blue");
}
}
}