Люблю гибкость, вводящую поставщика членства, но я ломаю голову, пытаясь пройти интеграционные тесты. Моя версия веб-приложения без проблем внедряет поставщика членства на моем уровне обслуживания, но я не могу настроить его / работать должным образом в моей версии приложения модульного / интеграционного тестирования. Вот как у меня все настроено для провайдера членства.
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?
ПРИМЕЧАНИЕ. Все остальные мои сконфигурированные объекты в моем приложении для тестирования модулей / интеграции работают, только мой поставщик членства создает проблемы.