En C# je peux déclarer des variables non initialisées qui sont ensuite assignées à diverses méthodes de la classe. Par exemple, dans un test NUnit, je peux déclarer une variable typée qui est seulement initialisée dans une méthode d'installation et ensuite utilisée de façon répétée dans les différents tests.Quel est le F idiomatique équivalent à la déclaration d'une variable pour une utilisation ultérieure en C#
private MyTestClass sut;
public Setup()
{
sut = new MyTestClass();
etc.
}
public FirstTest()
{
sut.DoSomeWork(1);
}
public SecondTest()
{
sut.DoSomeWork(2);
}
Je voudrais faire l'équivalent en F #. Cependant, selon this et d'autres, les «variables» non attribuées ne sont simplement pas les choses faites dans F #.
Dans le cas de mes tests F #, les tests ne reposent sur aucun type, juste au sein d'un module, donc [<DefaultValue>] val
ne fonctionnera pas. L'utilisation de mutable
ne semble pas juste, car cela semble être l'option de dernier recours pour les codeurs F #.
Puisque F # idomatique ne devrait pas nécessiter de valeurs non assignées, quelle est la façon "correcte" de contourner ce problème?
Quel est le problème avec 'let sut = new MyTestClass()'? – s952163
Pourquoi avez-vous besoin de ces variables? Y at-il une raison pour laquelle vous ne pouvez pas les déclarer là où vous les utilisez? Dans votre exemple C#, les deux tests ne peuvent pas être exécutés en parallèle, vous vous êtes tiré dans le pied. –
Sûrement je ne devrais pas avoir à déclarer les variables chaque fois que je l'utilise. Si chaque test nécessite une instance de cette classe qui est initialisée de manière identique, cette initialisation doit être dans la configuration. Que feriez-vous si vous aviez un grand nombre de tests et que chaque test nécessitait une initialisation complexe de diverses classes auxiliaires. Vous ne voudriez pas avoir à faire cela dans chaque test. Vous l'utiliseriez dans un assistant qui s'exécuterait avant chaque test pour initialiser, c'est-à-dire la méthode d'installation. Ai-je mal compris quelque chose? – FSharpOrBust