Любить гибкость, внедряя поставщика членства, но я почесываю голову, пытаясь пройти тесты интеграции. Моя версия веб-приложения внедряет поставщика членства без проблем на моем уровне обслуживания, но я не могу настроить его/правильно настроить в своей версии приложения для тестирования модулей/интеграции. Вот как я настроен для поставщика членства.Тестирование Spring.NET Injected Memberhip Provider
App.config:
<configuration>
<configSections>
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
</sectionGroup>
</configSections>
<spring>
<context>
<resource uri="assembly://App.UI/App.UI/auth-config.xml"/>
<resource uri="assembly://App.UI/App.UI/core-config.xml"/>
</context>
</spring>
<connectionStrings>
<add name="ApplicationServices" providerName="System.Data.SqlClient"
connectionString="server=localhost;database=aspnetdb;User ID=AppWebUser;[email protected]" />
<add name="appDb" providerName="System.Data.SqlClient"
connectionString="server=localhost;database=app;Persist Security Info=False;User ID=AppWebUser;[email protected]"/>
<add name="test_appDb" providerName="System.Data.SqlClient"
connectionString="server=localhost;database=app_test;Persist Security Info=False;User ID=AppWebUser;[email protected]"/>
</connectionStrings>
<system.web>
<membership defaultProvider="AppSqlMembershipProvider">
<providers>
<clear/>
<add connectionStringName="" name="AppSqlMembershipProvider" type="Spring.Web.Providers.MembershipProviderAdapter, Spring.Web"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="7"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
passwordStrengthRegularExpression=""/>
</providers>
</membership>
<roleManager enabled="true" defaultProvider="AppSqlRoleProvider">
<providers>
<clear/>
<add connectionStringName="" name="AppSqlRoleProvider" type="Spring.Web.Providers.RoleProviderAdapter, Spring.Web"/>
</providers>
</roleManager>
<profile defaultProvider="AppSqlProfileProvider">
<providers>
<clear/>
<add name="AppSqlProfileProvider" type="Spring.Web.Providers.ProfileProviderAdapter, Spring.Web" connectionStringName=""/>
</providers>
<properties>
<add name="Greeting" type="String"/>
</properties>
</profile>
</system.web>
</configuration>
Auth-config.xml:
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net">
<object id="AppSqlMembershipProvider" type="Spring.Web.Providers.ConfigurableSqlMembershipProvider">
<property name="connectionStringName" value="ApplicationServices" />
<property name="parameters">
<name-values>
<add key="description" value="membershipprovider description" />
</name-values>
</property>
</object>
<object id="AppSqlRoleProvider" type="Spring.Web.Providers.ConfigurableSqlRoleProvider">
<property name="connectionStringName" value="ApplicationServices" />
<property name="parameters">
<name-values>
<add key="description" value="roleprovider description" />
</name-values>
</property>
</object>
<object id="AppSqlProfileProvider" type="Spring.Web.Providers.ConfigurableSqlProfileProvider">
<property name="connectionStringName" value="ApplicationServices" />
<property name="parameters">
<name-values>
<add key="description" value="profileprovider description" />
</name-values>
</property>
</object>
</objects>
Мой MembershipProvider
настроен в ядро-config.xml:
<object id="AccountMembershipService" type="App.Core.Services.AccountMembershipService, App.Core.Services" >
<constructor-arg name="provider" ref="AppSqlMembershipProvider"/> <!-- see auth-config.xml for membership provider -->
</object>
Как я уже говорил ранее , Я могу ввести Service
никаких проблем в моем веб-приложении, но я не могу получить мой тест на работу co rrectly:
[TestFixture]
public class AccountMembershipServiceTest
{
protected IMembershipService AccountMembershipService { get; set; } // properyt injected
[Test]
public void SanityCheck()
{
Assert.IsNotNull(this.AccountMembershipService);
}
}
Но, увы .... провал:
------ Test started: Assembly: App.Tests.dll ------
Test 'App.Tests.IntegrationTesting.AccountMembershipServiceTest.SanityCheck' failed:
Expected: not null
But was: null
Integration\AccountMembershipServiceTest.cs(23,0): at App.Tests.IntegrationTesting.AccountMembershipServiceTest.SanityCheck()
0 passed, 1 failed, 0 skipped, took 1.80 seconds (NUnit 2.5.5).
Кто-нибудь еще с той же проблемой или решал это, а также с Spring.NET?
ПРИМЕЧАНИЕ. Все мои сконфигурированные объекты в моем приложении для тестирования модулей/интеграции работают, только мой членский провайдер является проблематичным.
ссылка: https://github.com/serra/stackoverflow/blob/master/spring-questions/q8981997_membership_provider_in_unit_test/Program.cs – Marijn
Возможно, я спрятал слишком много деталей в своем тесте. Мой «AccountMembershipServiceTest» наследует от другого класса, который наследуется от «AbstractTransactionalDbProviderSpringContextTests». Я попробовал «AbstractDependencyInjectionSpringContextTests » и «AbstractSpringContextTests» .... до сих пор нет кубиков. Я вижу, что объекты настроены, но это не инъекция. В эти выходные я собираюсь совершить глубокое погружение. –
Не уверен, почему я заставлял защищаться там. Сделал их публичными и установил автоматический провод для автоматического обнаружения. –