-
-
Save ukaszjankowski/d1e926f6fcb44605b44b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 1. Klasa, która wczeniej dostawala 20 zależnoci, teraz dostanie tylko jedna - skonfigurowana analogicznie | |
// do ITasks w tescie w drugiej czesci gista. Każdy ITask, sam bedzie decydowal na podstawie opcji, czy chce | |
// sie dodac do kolejki czy tez nie. Mysle zeby to zrealizowac na zasadzie: | |
public class QueueBuilder : IQueueBuilder | |
{ | |
[Inject] | |
public ITasks Tasks { private get; set; } | |
public List<ITask> BuildQueue(Options Options) | |
{ | |
var Result = new List<ITask>(); | |
foreach(var ITask in Tasks) // Podejmowanie decyzji o tym czy klasa chce wziac udzial w kolejce | |
// przetwarzania wsadowego przerzucam na nia. Zwroci mi IEnumerable<ITask> wrzucajac | |
// this do niej, lub pusty zbior | |
{ | |
Result.AddRange(ITask.GetInstanceIfNeeded(Options)) | |
} | |
retutn Result; | |
} | |
} | |
public class NinjectBehaviorTests | |
{ | |
[Fact] | |
public void NinjectReturnsDependenciesInCorrectOrder() | |
{ | |
//arrange | |
var Kernel = new StandardKernel(); | |
Kernel.Bind<ITasks>().To<TaskA>(); | |
Kernel.Bind<ITasks>().To<TaskB>(); | |
Kernel.Bind<ITasks>().To<TaskC>(); | |
var ExpectedResult = new List<int>() { 1, 2, 3 }; | |
//act | |
var Task = Kernel.GetAll<ITasks>(); | |
var ResultSet = new List<int>(); | |
Task.ToList().ForEach(t => ResultSet.Add(t.OrderNo)); | |
//assert | |
Assert.True(ExpectedResult.SequenceEqual(ResultSet)); | |
} | |
} | |
interface ITasks | |
{ | |
int OrderNo { get; } | |
} | |
class TaskC : ITasks { public int OrderNo { get { return 3; } } } | |
class TaskB : ITasks { public int OrderNo { get { return 2; } } } | |
class TaskA : ITasks { public int OrderNo { get { return 1; } } } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment