Ich verwende NHibernate, um diese Entität persistent zu machen:
%Vor% Beachten Sie, dass die Eigenschaft Id
über einen geschützten Setter verfügt. Dadurch wird verhindert, dass Benutzer Id
ändern, während NHibernate ihm weiterhin ein Id
beim Speichern in der Datenbank zuweisen kann.
In einem meiner Komponententests verwende ich Moq mit dem folgenden Code, um mein Repository nachzuahmen:
%Vor% Wenn ich Moq anrufe, eine neue Store
-Instanz zurückzugeben, kann ich die ID nicht zuweisen, und der Komponententest schlägt fehl. Wie kann ich diese Eigenschaft testen? Ich möchte die Zugriffsebene der Eigenschaft nicht ändern, da ich nicht möchte, dass Benutzer sie manuell ändern, und genau das muss ich hier tun, um sie zu testen.
Um dies als einen anderen Ansatz auszugeben, könntest du den Setzer protected internal
:
und verwenden Sie das Attribut InternalsVisibleTo
:
Sicherlich nicht der beste Ansatz, aber Sie könnten auch die Reflektion verwenden, um die Eigenschaft wie in Tests von Sharp Architecture .
Tags und Links c# unit-testing nunit moq nhibernate