Alors que mes fonctions de contrôleur de MVC correctement, je reçois une erreur de syntaxe dans mon test unitaire sur la ligne « assert » pour .Name
Comment accéder résultat du champ de contrôleur de retour dans le noyau
résultat IAction ne contient pas de définition pour « Name » ...
Si je passe la souris sur « résultat » en mode débogage je peux voir les données dans la variable résultat (résultat> Modèle> Nom). J'ai essayé d'y accéder avec Result.Model.Name mais c'est aussi une erreur de syntaxe.
test Unité:
[Fact]
public async Task TestGetNameById()
{
string expectedName = "Component";
using (var context = GetContextWithData())
using (var controller = new AssetTypesController(context))
{
var result = await controller.Details(2);
Assert.Equal(expectedName, result.Name);
}
}
Action du contrôleur:
public async Task<IActionResult> Details(int? id)
{
if (id == null)
{
return NotFound();
}
var assetType = await _context.AssetType
.SingleOrDefaultAsync(m => m.AssetTypeId == id);
if (assetType == null)
{
return NotFound();
}
return View(assetType);
}
Modèle
public class AssetType
{
[DatabaseGenerated(databaseGeneratedOption: DatabaseGeneratedOption.Identity)]
[Key]
public int AssetTypeId { get; set; }
[Required]
public string Name { get; set; }
}
Excellent, merci. Je ne comprends pas pourquoi je ne pourrais pas faire 'AssetType assetType = result.ViewData.Model' - avez-vous aussi une idée pourquoi ReSharper me donne un avertissement pour le "résultat" dans result.ViewData.Model disant "système possible .NullReferenceException "? – egmfrs
@egmfrs Probablement parce que controller.Details (2) pourrait être retourné comme nul. – 12seconds
Passage à (ViewResult) wait controller.Details (2); Correction de l'avertissement de syntaxe, mais le test unitaire a échoué. Je vais juste laisser tel quel. – egmfrs