Prüfen Sie eine Methode aufgerufen wird oder nicht im Unit-Test
Habe ich ein unit-test-ich bin überprüfung, ob eine Methode einmal aufgerufen wird oder nicht, so versuchte ich auf diese Weise:-
Dies ist mein Mock ILicenseManagerService und ich bin übergeben Ihr Objekt durch construstor.
public Mock<ILicenseManagerService> LicenseManagerService { get { return SetLicenseManagerServiceMock(); } }
private Mock<ILicenseManagerService> SetLicenseManagerServiceMock()
{
var licencemangerservicemock = new Mock<ILicenseManagerService>();
licencemangerservicemock.Setup(m => m.LoadProductLicenses()).Returns(ListOfProductLicense).Verifiable();
return licencemangerservicemock;
}
public static async Task<IEnumerable<IProductLicense>> ListOfProductLicense()
{
var datetimeoffset = new DateTimeOffset(DateTime.Now);
var lst = new List<IProductLicense>
{
GetProductLicense(true, datetimeoffset, false, "1"),
GetProductLicense(true, datetimeoffset, false, "2"),
GetProductLicense(true, datetimeoffset, true, "3")
};
return lst;
}
Ich bin mit diesem mock-Objekt zu setzen _licenseManagerService und aufrufen der LoadProductLicenses () - Methode im test. wie diese. Lizenzen kommen in Ordnung.
var licenses = (await _licenseManagerService.LoadProductLicenses()).ToList();
Mein Versuch, die für die überprüfung der Aufruf dieser Methode -
LicenseManagerService.Verify(m => m.LoadProductLicenses(),Times.Once);
Aber wenn ich im Einsatz mein unit-test eine Ausnahme kommen, die sagen, die Methode ist nicht invocked überhaupt.
wo bin ich falsch??
BEARBEITEN @dacastro ich bin aufrufen der gleichen mock-hier ist mein unit-test.
[TestMethod]
[TestCategory("InApp-InAppStore")]
public async Task return_products_from_web_when_cache_is_empty()
{
//this class basically for setting up external dependencies
//Like - LicenceManagerService in context, i am using this mock only no new mock.
var inAppMock = new InAppMock ();
//object of Class under test- I used static method for passing external
//services for easy to change
var inAppStore = StaticMethods.GetInAppStore(inAppMock);
//method is called in this method
var result = await inAppStore.LoadProductsFromCacheOrWeb();
//like you can see using the same inAppMock object and same LicenseManagerService
inAppMock.LicenseManagerService.Verify(m => m.LoadProductLicenses(),Times.Once);
}
InformationsquelleAutor loop | 2014-06-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Durch den Aufruf der
LicenseManagerService
Eigenschaft, die Sie erstellen, eine neue mock-Objekt. Natürlich, keine Anrufungen jemals durchgeführt wurde, auf diese Instanz.Sollten Sie diese Eigenschaft ändern, die Umsetzung von Rückkehr der gleichen Instanz jedes mal, wenn es aufgerufen wird.
kannst du die definition für
InAppMock.LicenseManagerService
?Es ist bei den meisten top. eigentlich LiceneseManagerService ist eine der Eigenschaft der InAppMock Klasse.Im Grunde InAppMock Klasse bieten Mock von externen Abhängigkeiten. Ich habe getan, um es in mehrere Testfälle.
Dann ist das dein problem.
inAppMock.LicenseManagerService.Verify
erstellt ein neues mock-Instanz jedes mal, wenn es aufgerufen wird. Ändern Sie die Eigenschaft, die Umsetzung von Rückkehr der gleichen Instanz jeder Zeit.Habe es dcastro. Danke das ist das problem :). können Sie aktualisieren Sie Ihre und ein litle bit. so kann ich mark Recht.
InformationsquelleAutor dcastro