Харесвам гъвкавостта, която инжектира доставчикът на членство, но си чеша главата, опитвайки се да накарам тестовете за интеграция да преминат. Версията на моето уеб приложение инжектира доставчика на членство без проблем в моя сервизен слой, но не мога да го конфигурирам/работи правилно в моята версия на приложението за модулно/интеграционно тестване. Ето как съм конфигурирал всичко за доставчика на членство.
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;Password=p@ssw0rd" />
<add name="appDb" providerName="System.Data.SqlClient"
connectionString="server=localhost;database=app;Persist Security Info=False;User ID=AppWebUser;Password=p@ssw0rd"/>
<add name="test_appDb" providerName="System.Data.SqlClient"
connectionString="server=localhost;database=app_test;Persist Security Info=False;User ID=AppWebUser;Password=p@ssw0rd"/>
</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
е конфигуриран в core-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
без проблем в моето уеб приложение, но изглежда не мога да накарам теста си да работи правилно:
[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?
ЗАБЕЛЕЖКА: Всички мои други конфигурирани обекти в моето приложение за модулно/интеграционно тестване работят, само моят доставчик на членство е проблематичен.