SlideShare une entreprise Scribd logo
1  sur  21
Les tests
comportementaux avec
ASP.Net Core
@arnaudauroux
arnaud@auroux.me
geeklearning.io/author/Arnaud
github.com/arnaudauroux
Tests automatisés : Objectifs
• Fiabilité
• Réutilisabilité
• Détection précoce des problèmes
• Parallélisme
• Documentation
• Volume
• …
Plusieurs choix
TESTING
unit
integration
user interface
load
…
regression
functional
accessibility
smoke
keyword comportement
Plusieurs choix
TESTING
unit
integration
user interface
load
…
regression
functional
accessibility
smoke
keyword comportement
Unit testing
« Une unité représente la plus petite partie testable d’une application »
• Séparation des responsabilités
• Isolation des couches
• Approche par contrat
Mocks / Stubs / Tests unitaires = CODE =
Plusieurs choix
TESTING
unit
integration
user interface
load
…
regression
functional
accessibility
smoke
keyword comportement
Integration testing
« Valider qu’une solution et ses dépendances externes
une fois assemblées fonctionne »
• Configuration
• Environnement d’intégration
• …
=
Plusieurs choix
TESTING
unit
integration
user interface
load
…
regression
functional
accessibility
smoke
keyword comportement
Behavior testing
« Valider un scénario fonctionnel sans dépendance aux détails
d’implémentation »
• Ecrire le minimum de code pour tester le maximum d’un scenario
fonctionnel
• Couvrir facilement un scénario de bout en bout
• Abstraction des dépendances externes
ASP.NET Core et Behavior testing
• WebHostBuilder
• Startup
 ConfigurationServices()
 Configure()
• EntityFrameworkCore
 SQLite (in-memory mode)
• TestServer
ASP.NET Core et Behavior testing
Startup
Standard Configuration Service Test Configuration Service
WebApp TestServer
WebHost
ASP.NET Core et Behavior testing
public class TestStartupConfigurationService : IStartupConfigurationService
{
public virtual void ConfigureEnvironment(IHostingEnvironment env)
{
env.EnvironmentName = "Test"
}
public virtual void ConfigureServices(IServiceCollection services, IConfigurationRoot configuration)
{
var connectionStringBuilder = new SqliteConnectionStringBuilder { DataSource = ":memory:" };
var connectionString = connectionStringBuilder.ToString();
var connection = new SqliteConnection(connectionString);
services.AddDbContext<DbContext>(options => options.UseSqlite(connection));
}
public virtual void Configure(IApplicationBuilder app, IHostingEnvironment env, …)
{
…
dbContext.Database.EnsureCreated();
…
}
}
Exemple - TestStartupConfigurationService :
ASP.NET Core et Behavior testing
Exemple - StandardStartupConfigurationService :
public class StartupConfigurationService : IStartupConfigurationService
{
public virtual void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{ }
public virtual void ConfigureEnvironment(IHostingEnvironment env)
{ }
public virtual void ConfigureService(IServiceCollection services, IConfigurationRoot configuration)
{
services.AddDbContext<DbContext>(options => options.UseSqlServer(@"[SQL_CONNECTION_STRING]"));
}
}
ASP.NET Core et Behavior testing
new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.ConfigureServices(s => s.AddSingleton<IStartupConfigurationService,
StartupConfigurationService>())
.Build()
.Run();
Exemple – Program.Main() :
ASP.NET Core et Behavior testing
public class Startup
{
private IStartupConfigurationService externalStartupConfiguration;
public Startup(IHostingEnvironment env, IStartupConfigurationService externalStartupConfiguration)
{
this.externalStartupConfiguration = externalStartupConfiguration;
this.externalStartupConfiguration.ConfigureEnvironment(env);
…
}
public void ConfigureServices(IServiceCollection services)
{
…
this.externalStartupConfiguration.ConfigureServices(services, Configuration);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
this.externalStartupConfiguration.Configure(app, env, loggerFactory, Configuration);
…
}
}
Exemple – Startup :
ASP.NET Core et Behavior testing
Exemple – TestMethod :
[TestMethod]
public void TestScenario()
{
Data[] data = CreateTestScenarioDataIntoInMemoryDb();
var webHostBuilder = new WebHostBuilder();
webHostBuilder.ConfigureServices(
s => s.AddSingleton<IStartupConfigurationService, TestStartupConfigurationService<DbContext>> ());
webHostBuilder.UseStartup<Startup>();
var testServer = new TestServer(webHostBuilder);
var response = testServer.CreateClient().GetAsync("/api/data").Result;
response.EnsureSuccessStatusCode();
var result = response.Content.ReadAsAsync<Data[]>().Result;
Assert.AreEqual(data.Length, result.Length);
for (int i = 0; i < data.Length; i++)
{
Assert.AreEqual(data[i], result[i]);
}
}
ASP.NET Core et Behavior testing
SpecFlow
• Description naturelle d’un scénario
• Abstraction du contexte technique
• Semi-intégration à NET Core 2.0
ASP.NET Core et Behavior testing
Feature: Get blogs
In order to list blogs
I want to get the list of blogs
Background:
Given A configured environment
Scenario: Get blogs should be ok
Given the following blogs
| Url |
| http://blog1.io |
| http://blog2.io |
When I get the list of blogs from Api
Then the result must be the following list
| Url |
| http://blog1.io |
| http://blog2.io |
[Binding]
public class MainSteps
{
[Given(@"A configured environment")]
public void GivenAWorkingEnvironment()
{}
[Given(@"the following blogs")]
public void GivenTheFollowingBlogs(Table table)
{}
[When(@"I get the list of blogs from Api")]
public void WhenIGetTheListOfBlogs()
{}
[Then(@"the result must be the following list")]
public void ThenTheResultMustBeTheFollowingList(Table
expectedResult)
{}
}
SpecFlow
ASP.NET Core et Behavior testing
Aller plus loin – Test de la stack MVC
• Gestion du ViewModel
• Gestion de l’Anti Forgery Token
• Gestion des dépendances Razor (.deps.json)
ASP.NET Core et Behavior testing
Aller plus loin – Gestion de l’identité
• Développement de son propre AuthenticationScheme
 AuthenticationSchemeOptions
 Définition des informations de l’identité de test
 AuthenticationHandler<SchemeOptions>
 Création de l’identité de test
 AuthenticationBuilder
 Création du schéma d’authentification à partir des options et du handler
ASP.NET Core et Behavior testing
• Série d’article sur les tests comportementaux avec ASP.NET Core
 http://geeklearning.io/a-different-approach-to-test-your-asp-net-core-
application/
• Projet GitHub
 https://github.com/geeklearningio/Testavior
• Packages nuget
 https://www.nuget.org/packages/GeekLearning.Testavior
 https://www.nuget.org/packages/GeekLearning.Testavior.Configuration

Contenu connexe

Tendances

Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)DNG Consulting
 
Angular + JHipster @ Paris JUG
Angular + JHipster @ Paris JUGAngular + JHipster @ Paris JUG
Angular + JHipster @ Paris JUGWilliam Marques
 
Gatekeeper par Guillaume Faure
Gatekeeper par Guillaume FaureGatekeeper par Guillaume Faure
Gatekeeper par Guillaume FaureCocoaHeads France
 
Aspnetcore introduction
Aspnetcore introductionAspnetcore introduction
Aspnetcore introductionMichel Bruchet
 

Tendances (6)

Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)
 
Angular + JHipster @ Paris JUG
Angular + JHipster @ Paris JUGAngular + JHipster @ Paris JUG
Angular + JHipster @ Paris JUG
 
Spring Batch
Spring BatchSpring Batch
Spring Batch
 
Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 
Gatekeeper par Guillaume Faure
Gatekeeper par Guillaume FaureGatekeeper par Guillaume Faure
Gatekeeper par Guillaume Faure
 
Aspnetcore introduction
Aspnetcore introductionAspnetcore introduction
Aspnetcore introduction
 

Similaire à Les tests comportementaux avec aspnet core

Java dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnASJava dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnASGuillaume Sauthier
 
Java dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasJava dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasMicrosoft
 
Performance ug#1
Performance ug#1Performance ug#1
Performance ug#1Marc Bojoly
 
Cocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitairesCocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitairesCocoaHeads France
 
Service WEB de type REST avec Java
Service WEB de type REST avec JavaService WEB de type REST avec Java
Service WEB de type REST avec JavaFrancois ANDRE
 
Xdt Tests Driven Architecture Process V1.0
Xdt Tests Driven Architecture Process V1.0Xdt Tests Driven Architecture Process V1.0
Xdt Tests Driven Architecture Process V1.0guestee837a
 
Tester les applications Zend Framework
Tester les applications Zend FrameworkTester les applications Zend Framework
Tester les applications Zend FrameworkMickael Perraud
 
RefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsRefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsOCTO Technology
 
PréSentation Qualoo Le Generateur De Code Java J2 Ee
PréSentation Qualoo   Le Generateur De Code Java J2 EePréSentation Qualoo   Le Generateur De Code Java J2 Ee
PréSentation Qualoo Le Generateur De Code Java J2 EeST informatique services
 
react-slides.ppx (2) (1).pptx react presentation basic
react-slides.ppx (2) (1).pptx react presentation basicreact-slides.ppx (2) (1).pptx react presentation basic
react-slides.ppx (2) (1).pptx react presentation basiczineblahib2
 
Développer sereinement avec Node.js
Développer sereinement avec Node.jsDévelopper sereinement avec Node.js
Développer sereinement avec Node.jsJulien Giovaresco
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaMicrosoft
 
Evolutions scub foundation 3.0 = 4.0
Evolutions scub foundation 3.0 =  4.0Evolutions scub foundation 3.0 =  4.0
Evolutions scub foundation 3.0 = 4.0adrienhautot
 
OWF12/HTML 5 local storage , olivier thomas, cto at webtyss
OWF12/HTML 5 local storage , olivier thomas, cto at webtyssOWF12/HTML 5 local storage , olivier thomas, cto at webtyss
OWF12/HTML 5 local storage , olivier thomas, cto at webtyssParis Open Source Summit
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring bootAntoine Rey
 
Nouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde MicrosoftNouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde Microsoftdavrous
 
Octo Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-endOcto Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-endFrançois Petitit
 
Octo RefCard test front-end
Octo RefCard test front-endOcto RefCard test front-end
Octo RefCard test front-endClément Dubois
 

Similaire à Les tests comportementaux avec aspnet core (20)

Test angular 2+
Test angular 2+Test angular 2+
Test angular 2+
 
Java dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnASJava dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnAS
 
Java dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasJava dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de Jonas
 
J Unit
J UnitJ Unit
J Unit
 
Performance ug#1
Performance ug#1Performance ug#1
Performance ug#1
 
Cocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitairesCocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitaires
 
Service WEB de type REST avec Java
Service WEB de type REST avec JavaService WEB de type REST avec Java
Service WEB de type REST avec Java
 
Xdt Tests Driven Architecture Process V1.0
Xdt Tests Driven Architecture Process V1.0Xdt Tests Driven Architecture Process V1.0
Xdt Tests Driven Architecture Process V1.0
 
Tester les applications Zend Framework
Tester les applications Zend FrameworkTester les applications Zend Framework
Tester les applications Zend Framework
 
RefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsRefCard Tests sur tous les fronts
RefCard Tests sur tous les fronts
 
PréSentation Qualoo Le Generateur De Code Java J2 Ee
PréSentation Qualoo   Le Generateur De Code Java J2 EePréSentation Qualoo   Le Generateur De Code Java J2 Ee
PréSentation Qualoo Le Generateur De Code Java J2 Ee
 
react-slides.ppx (2) (1).pptx react presentation basic
react-slides.ppx (2) (1).pptx react presentation basicreact-slides.ppx (2) (1).pptx react presentation basic
react-slides.ppx (2) (1).pptx react presentation basic
 
Développer sereinement avec Node.js
Développer sereinement avec Node.jsDévelopper sereinement avec Node.js
Développer sereinement avec Node.js
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmedia
 
Evolutions scub foundation 3.0 = 4.0
Evolutions scub foundation 3.0 =  4.0Evolutions scub foundation 3.0 =  4.0
Evolutions scub foundation 3.0 = 4.0
 
OWF12/HTML 5 local storage , olivier thomas, cto at webtyss
OWF12/HTML 5 local storage , olivier thomas, cto at webtyssOWF12/HTML 5 local storage , olivier thomas, cto at webtyss
OWF12/HTML 5 local storage , olivier thomas, cto at webtyss
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
Nouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde MicrosoftNouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde Microsoft
 
Octo Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-endOcto Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-end
 
Octo RefCard test front-end
Octo RefCard test front-endOcto RefCard test front-end
Octo RefCard test front-end
 

Plus de Arnaud Auroux

Conférence windows phone 7
Conférence windows phone 7Conférence windows phone 7
Conférence windows phone 7Arnaud Auroux
 
Visual studio online
Visual studio onlineVisual studio online
Visual studio onlineArnaud Auroux
 
Accéder aux données avec le windows runtime
Accéder aux données avec le windows runtimeAccéder aux données avec le windows runtime
Accéder aux données avec le windows runtimeArnaud Auroux
 
Développement d'un composant win rt
Développement d'un composant win rtDéveloppement d'un composant win rt
Développement d'un composant win rtArnaud Auroux
 
Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8Arnaud Auroux
 
Tech days 2012 mvvm de a à z
Tech days 2012   mvvm de a à zTech days 2012   mvvm de a à z
Tech days 2012 mvvm de a à zArnaud Auroux
 
Industrialiser le développement avec silverlight 4 et wcf ria services
Industrialiser le développement avec silverlight 4 et wcf ria servicesIndustrialiser le développement avec silverlight 4 et wcf ria services
Industrialiser le développement avec silverlight 4 et wcf ria servicesArnaud Auroux
 
Cas Pratique Du Mode DéConnecté De Silverlight
Cas Pratique Du Mode DéConnecté De SilverlightCas Pratique Du Mode DéConnecté De Silverlight
Cas Pratique Du Mode DéConnecté De SilverlightArnaud Auroux
 

Plus de Arnaud Auroux (8)

Conférence windows phone 7
Conférence windows phone 7Conférence windows phone 7
Conférence windows phone 7
 
Visual studio online
Visual studio onlineVisual studio online
Visual studio online
 
Accéder aux données avec le windows runtime
Accéder aux données avec le windows runtimeAccéder aux données avec le windows runtime
Accéder aux données avec le windows runtime
 
Développement d'un composant win rt
Développement d'un composant win rtDéveloppement d'un composant win rt
Développement d'un composant win rt
 
Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8
 
Tech days 2012 mvvm de a à z
Tech days 2012   mvvm de a à zTech days 2012   mvvm de a à z
Tech days 2012 mvvm de a à z
 
Industrialiser le développement avec silverlight 4 et wcf ria services
Industrialiser le développement avec silverlight 4 et wcf ria servicesIndustrialiser le développement avec silverlight 4 et wcf ria services
Industrialiser le développement avec silverlight 4 et wcf ria services
 
Cas Pratique Du Mode DéConnecté De Silverlight
Cas Pratique Du Mode DéConnecté De SilverlightCas Pratique Du Mode DéConnecté De Silverlight
Cas Pratique Du Mode DéConnecté De Silverlight
 

Les tests comportementaux avec aspnet core

  • 1. Les tests comportementaux avec ASP.Net Core @arnaudauroux arnaud@auroux.me geeklearning.io/author/Arnaud github.com/arnaudauroux
  • 2. Tests automatisés : Objectifs • Fiabilité • Réutilisabilité • Détection précoce des problèmes • Parallélisme • Documentation • Volume • …
  • 5. Unit testing « Une unité représente la plus petite partie testable d’une application » • Séparation des responsabilités • Isolation des couches • Approche par contrat Mocks / Stubs / Tests unitaires = CODE =
  • 7. Integration testing « Valider qu’une solution et ses dépendances externes une fois assemblées fonctionne » • Configuration • Environnement d’intégration • … =
  • 9. Behavior testing « Valider un scénario fonctionnel sans dépendance aux détails d’implémentation » • Ecrire le minimum de code pour tester le maximum d’un scenario fonctionnel • Couvrir facilement un scénario de bout en bout • Abstraction des dépendances externes
  • 10. ASP.NET Core et Behavior testing • WebHostBuilder • Startup  ConfigurationServices()  Configure() • EntityFrameworkCore  SQLite (in-memory mode) • TestServer
  • 11. ASP.NET Core et Behavior testing Startup Standard Configuration Service Test Configuration Service WebApp TestServer WebHost
  • 12. ASP.NET Core et Behavior testing public class TestStartupConfigurationService : IStartupConfigurationService { public virtual void ConfigureEnvironment(IHostingEnvironment env) { env.EnvironmentName = "Test" } public virtual void ConfigureServices(IServiceCollection services, IConfigurationRoot configuration) { var connectionStringBuilder = new SqliteConnectionStringBuilder { DataSource = ":memory:" }; var connectionString = connectionStringBuilder.ToString(); var connection = new SqliteConnection(connectionString); services.AddDbContext<DbContext>(options => options.UseSqlite(connection)); } public virtual void Configure(IApplicationBuilder app, IHostingEnvironment env, …) { … dbContext.Database.EnsureCreated(); … } } Exemple - TestStartupConfigurationService :
  • 13. ASP.NET Core et Behavior testing Exemple - StandardStartupConfigurationService : public class StartupConfigurationService : IStartupConfigurationService { public virtual void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { } public virtual void ConfigureEnvironment(IHostingEnvironment env) { } public virtual void ConfigureService(IServiceCollection services, IConfigurationRoot configuration) { services.AddDbContext<DbContext>(options => options.UseSqlServer(@"[SQL_CONNECTION_STRING]")); } }
  • 14. ASP.NET Core et Behavior testing new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .ConfigureServices(s => s.AddSingleton<IStartupConfigurationService, StartupConfigurationService>()) .Build() .Run(); Exemple – Program.Main() :
  • 15. ASP.NET Core et Behavior testing public class Startup { private IStartupConfigurationService externalStartupConfiguration; public Startup(IHostingEnvironment env, IStartupConfigurationService externalStartupConfiguration) { this.externalStartupConfiguration = externalStartupConfiguration; this.externalStartupConfiguration.ConfigureEnvironment(env); … } public void ConfigureServices(IServiceCollection services) { … this.externalStartupConfiguration.ConfigureServices(services, Configuration); } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { this.externalStartupConfiguration.Configure(app, env, loggerFactory, Configuration); … } } Exemple – Startup :
  • 16. ASP.NET Core et Behavior testing Exemple – TestMethod : [TestMethod] public void TestScenario() { Data[] data = CreateTestScenarioDataIntoInMemoryDb(); var webHostBuilder = new WebHostBuilder(); webHostBuilder.ConfigureServices( s => s.AddSingleton<IStartupConfigurationService, TestStartupConfigurationService<DbContext>> ()); webHostBuilder.UseStartup<Startup>(); var testServer = new TestServer(webHostBuilder); var response = testServer.CreateClient().GetAsync("/api/data").Result; response.EnsureSuccessStatusCode(); var result = response.Content.ReadAsAsync<Data[]>().Result; Assert.AreEqual(data.Length, result.Length); for (int i = 0; i < data.Length; i++) { Assert.AreEqual(data[i], result[i]); } }
  • 17. ASP.NET Core et Behavior testing SpecFlow • Description naturelle d’un scénario • Abstraction du contexte technique • Semi-intégration à NET Core 2.0
  • 18. ASP.NET Core et Behavior testing Feature: Get blogs In order to list blogs I want to get the list of blogs Background: Given A configured environment Scenario: Get blogs should be ok Given the following blogs | Url | | http://blog1.io | | http://blog2.io | When I get the list of blogs from Api Then the result must be the following list | Url | | http://blog1.io | | http://blog2.io | [Binding] public class MainSteps { [Given(@"A configured environment")] public void GivenAWorkingEnvironment() {} [Given(@"the following blogs")] public void GivenTheFollowingBlogs(Table table) {} [When(@"I get the list of blogs from Api")] public void WhenIGetTheListOfBlogs() {} [Then(@"the result must be the following list")] public void ThenTheResultMustBeTheFollowingList(Table expectedResult) {} } SpecFlow
  • 19. ASP.NET Core et Behavior testing Aller plus loin – Test de la stack MVC • Gestion du ViewModel • Gestion de l’Anti Forgery Token • Gestion des dépendances Razor (.deps.json)
  • 20. ASP.NET Core et Behavior testing Aller plus loin – Gestion de l’identité • Développement de son propre AuthenticationScheme  AuthenticationSchemeOptions  Définition des informations de l’identité de test  AuthenticationHandler<SchemeOptions>  Création de l’identité de test  AuthenticationBuilder  Création du schéma d’authentification à partir des options et du handler
  • 21. ASP.NET Core et Behavior testing • Série d’article sur les tests comportementaux avec ASP.NET Core  http://geeklearning.io/a-different-approach-to-test-your-asp-net-core- application/ • Projet GitHub  https://github.com/geeklearningio/Testavior • Packages nuget  https://www.nuget.org/packages/GeekLearning.Testavior  https://www.nuget.org/packages/GeekLearning.Testavior.Configuration

Notes de l'éditeur

  1. Moreover, in this case your tests are very dependent of the implementation details so if a detail has changed, you are likely to have to update the tests as well. Doing so is costly and might also lead to new defects.
  2. Webhostbuilder: configure et instantie un hote web responsable de démarrer l’application et de gérer son cycle de vie Startup: configure les services et la request pipeline
  3. Anti Forgery Token vise à protéger les users des attaques de type CSRF (Cross Site Request Forgery). Un attaquant envoie un mail à une victime contenant un lien vers un formulaire web d’un site malicieux. Le formulaire est configure pour un POST sur le site vulnerable, les données seraient donc envoyées sur le site vulnerable avec les autorisations de la victime. Pour se protéger, lors du GET du form, le serveur inclu 2 tokens, 1 dans un cookie et l’autre comme input hidden dans le formulaire. Si le client n’envoie pas les 2 tokens, la requête est invalidée. Cela fonctionne car le site malicieux ne peut pas lire le token renvoyé par le serveur grâce à la politique de sécurité de l’origine identique. Le site attaquant peut envoyer un POST mais pas lire la réponse. The Razor engine uses dependency files (.deps.json) to resolve some references at runtime. So in order to test the MVC part of a application, it is necessary to import these files. To do it, add the following section to your .csproj