相关疑难解决方法(0)

什么是控制倒置?

控制反转(或IoC)在第一次遇到时会非常混乱.

  1. 它是什么?
  2. 它解决了哪个问题?
  3. 何时适合使用,何时不适用?

oop design-patterns inversion-of-control

1704
推荐指数
30
解决办法
46万
查看次数

Ninject教程/文档?

根据官方网站:了解Ninject的最佳地点来自Github上的官方维基.

真的吗?作为初学者,我发现官方维基不是很有帮助.有没有更好的教程?我试过Google,但没找到我要找的东西.

ninject

7
推荐指数
1
解决办法
3684
查看次数

理解为什么我们使用反转控制容器进行单元测试

我目前正在考虑将Ninject纳入我的单元测试中.通过与早期问题相关的一些非常聪明的帖子(什么是Ninject以及何时使用它?,http://martinfowler.com/articles/injection.html); 我想我得到了一些核心概念,但是如果它的应用程序我正在努力.

大多数情况下,当IOC包含器出现时,它与将它们合并到单元测试中有关.但是,从实际的角度来看,在我的单元测试中使用像Ninject这样的框架是否有意义,如果我还没有将它合并到我的实际代码库中呢?

举例说明下面的例子(使用C#从James Bender的专业测试驱动开发中取消:使用TDD开发真实世界的应用程序)

[TestFixture]
public class PersonServiceTests
{
    [Test]
    public void ShouldBeAbleToCallPersonServiceAndGetPerson()
    {
        var expected = new Person {Id = 1, FirstName = “John”, LastName = “Doe”};
        var kernel = new StandardKernel(new CoreModule());
        var personService = kernel.Get < PersonService > ();
        var actual = personService.GetPerson(expected.Id);
        Assert.AreEqual(expected.Id, actual.Id);
        Assert.AreEqual(expected.FirstName, actual.FirstName);
        Assert.AreEqual(expected.LastName, actual.LastName);
    }
}
Run Code Online (Sandbox Code Playgroud)

如何使用Ninject编写我的测试改善我的生活(或任何继承我的代码的可怜的开发人员),而不是仅仅编写我的测试:

[TestFixture]
public class PersonServiceTests
{
    [Test]
    public void ShouldBeAbleToCallPersonServiceAndGetPerson()
    {
        var expected = new Person {Id = 1, FirstName = …
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection ninject inversion-of-control

3
推荐指数
1
解决办法
533
查看次数