Bonjour,
Je suis occupé de faire des tests avec des méthodes async
J'utilise xUnit
L'erreur est détecté par le gestionnaire de tests dans la methode Delete
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 //Constructeur public myObjTest(Database db){ // service de gestion de la table dbObjService = db.objService //creation de mes 2 obj => en réalité créé ailleur mais bien présent dans la db après creation await dbMyObjService.AddAsync(new() { Id = 1, Serial = "ABCD" })); await dbMyObjService.AddAsync(new() { Id = 2, Serial = "DEFG" })); await dbMyObjService.AddAsync(new() { Id = 3, Serial = "1234" })); await dbMyObjService.AddAsync(new() { Id = 4, Serial = "5678" })); } //UPDATE TEST [Fact] public async Task UpdateObjTest() { var myObj = await dbMyObjService.GetByIdAsync(1); // change name to the same as Id 2 myObj.Serial = "DEFG"; // is throwing bcs serial must be unic await Assert.ThrowsAsync<Microsoft.EntityFrameworkCore.DbUpdateException>(() => dbMyObjService.UpdateAsync(myObj)); } //DELETE TEST [Theory] [InlineData(7)] [InlineData(8)] public async Task DeleteObjTest(int objId) { var obj = await dbMyObjService.GetByIdAsync(objId); Assert.True(await dbMyObjService.DeleteAsync(obj)); Assert.Null(await dbMyObjService.GetByIdAsync(obj)); }
error throw "Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while updating the entries. See the inner exception for details."MySql.Data.MySqlClient.MySqlException Duplicate entry 'DEFG' for key 'sr_radcam_nk7_main.sr_radcam_nk7_main_Serial_uindex'
Mais j'ai le sentiment qu'entre le test update & le delete le buffer d'erreurs sql n'est pas vidé.
Comment dois-je donc faire pour tester un throw dans l'update tout en fessant en sorte que le delete continue de fonctionner?
L'exécution des tests lancés individuellement ne rapportent pas d'erreur.
Pourquoi exécutés à la suite, l'erreur est-elle alors déclenché?
Merci d'avance
Ajout:Je me suis dis au début que j'avais mal écris ma fonction anonyme
donc j'ai modifié ceci
Mais j'obtiens toujours la même erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 //UPDATE TEST [Fact] public async Task UpdateObjTest() { var myObj = await dbMyObjService.GetByIdAsync(1); // change name to the same as Id 2 // is throwing bcs serial must be unic await Assert.ThrowsAsync<Microsoft.EntityFrameworkCore.DbUpdateException>(async () => { myObj.Serial = "DEFG"; await dbMyObjService.UpdateAsync(myObj); }); }
Partager