mirror of
https://github.com/Sarsoo/Spotify.NET.git
synced 2024-12-25 23:46:27 +00:00
36 lines
789 B
Markdown
36 lines
789 B
Markdown
|
---
|
||
|
id: unit_testing
|
||
|
title: Unit Testing
|
||
|
---
|
||
|
|
||
|
The modular structure of the library makes it easy to mock the API when unit testing. Consider the following method:
|
||
|
|
||
|
```csharp
|
||
|
public static async Task<bool> IsAdmin(IUserProfileClient userProfileClient)
|
||
|
{
|
||
|
// get loggedin user
|
||
|
var user = await userProfileClient.Current();
|
||
|
|
||
|
// only my user id is an admin
|
||
|
return user.Id == "1122095781";
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Using `Moq`, this can be tested without doing any network requests:
|
||
|
|
||
|
```csharp
|
||
|
[Test]
|
||
|
public async Task IsAdmin_SuccessTest()
|
||
|
{
|
||
|
var userProfileClient = new Mock<IUserProfileClient>();
|
||
|
userProfileClient.Setup(u => u.Current()).Returns(
|
||
|
Task.FromResult(new PrivateUser
|
||
|
{
|
||
|
Id = "1122095781"
|
||
|
})
|
||
|
);
|
||
|
|
||
|
Assert.AreEqual(true, await IsAdmin(userProfileClient.Object));
|
||
|
}
|
||
|
```
|