Ich habe ein Unit-Test-i Überprüfung ist, ob eine Methode einmal aufgerufen wird oder nicht, so dass ich auf diese Weise versucht: -Stellen Sie sicher, eine Methode aufgerufen wird oder nicht in Einheit Test
Das ist mein Mock von ILicenseManagerService und ich bin vorbei ihr Gegenstand durch den Contrustor.
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 Mockobjekt _licenseManagerService zu setzen und die LoadProductLicenses() in der Methode im Test aufrufen. so was. Lizenzen kommen gut.
var licenses = (await _licenseManagerService.LoadProductLicenses()).ToList();
Mein Versuch für den Aufruf dieser Methode überprüfen -
LicenseManagerService.Verify(m => m.LoadProductLicenses(),Times.Once);
Aber wenn ich meine Unit-Test eine Ausnahme kommenden runing, die sagen Methode überhaupt nicht invocked wird. wo ich falsch mache?
BEARBEITEN @dacastro Ich berufe den gleichen Mock hier ist meine Einheit 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);
}
Ich bin sicher, dass ich das gleiche Mock-Objekt verwende. Kannst du den Schnitt sehen? – loop
@loop können Sie die Definition für 'InAppMock.LicenseManagerService' veröffentlichen? – dcastro
Es ist an der Spitze. Tatsächlich ist LicenseManagerService eine der Eigenschaften von InAppMock Class.Basically InAppMock Klasse bieten Mock von externen Abhängigkeiten. Ich habe es getan, um es in mehreren Testfällen zu verwenden. – loop