Где создать интерфейс в тесте Nunit - PullRequest
1 голос
/ 27 октября 2010

Я думаю, что я упускаю что-то действительно простое, поэтому заранее прошу прощения.Я пытаюсь проверить интерфейс с Nunit.Интерфейс реализован классом, производным от базового класса, и я использую Castle Windsor для IOC.Я просто не знаю, где назначить интерфейс в производном тестовом классе.

Вот базовый тестовый класс

[TestFixture]
public class BaseTest
{
    protected ISession session;
    [SetUp]
    public void setup() {
        NHibernateConfig.Init(
            MsSqlConfiguration.MsSql2008.ConnectionString(
            builder =>
            builder.Server("localhost")
            .Database("Db_test")
            .TrustedConnection()),
            RebuildDatabase());
        session = NHibernateConfig.CreateAndOpenSession();
    }
    [Test]
    public void Shoud_Test_Connection(){
        // testing connection via setup fixture
    }
    [TearDown]
    public void TearDown(){
        if (session != null)
            session.Dispose();
    }
    private Action<Configuration> RebuildDatabase() {
        return config => new SchemaExport(config).Create(false, true);
    }
}

Вот производный тестовый класс

[TestFixture]
public class RepositoryTest : BaseTest
{
    IRepository repository;
    [SetUp]
    public void Setup(){
      // I think the interface should get assigned
      // in here somehow....
    }
    [Test]
    public void Should_Create_And_Read(){
        var post = CreatePost();
        var actual = (IList) repository.GetAll();
        Assert.Contains(post, actual);
        Assert.AreEqual(1, actual.Count);
    }
}

У меня есть зарегистрированный репозиторий в моем контейнере windsor, и он работает нормальномои контроллеры, просто не могу понять, как проверить интерфейс.Мое единственное решение состоит в том, чтобы назначить интерфейсу конкретную реализацию в методе установки, но мне интересно, если я собираюсь использовать DI для какой-то обработки.

1 Ответ

1 голос
/ 27 октября 2010

Спросите, и вы получите:)

Вам нужна ссылка на ваш контейнер в вашем тесте, и вам нужно вызвать .Resolve () Я считаю, что именно так Касл называет их метод, но я могу ошибаться.

Чтобы получить ссылку на ваш контейнер в тесте, вам нужно создать контейнер в какой-то момент. Я на самом деле не эксперт Касла, но посмотрите, что код на этой странице выглядит довольно простым примером того, как обновить контейнер и разрешить зависимость

http://stw.castleproject.org/Windsor.MainPage.ashx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...