Runly.Time
1.0.0
dotnet add package Runly.Time --version 1.0.0
NuGet\Install-Package Runly.Time -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Runly.Time" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Runly.Time --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Runly.Time, 1.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Runly.Time as a Cake Addin
#addin nuget:?package=Runly.Time&version=1.0.0
// Install Runly.Time as a Cake Tool
#tool nuget:?package=Runly.Time&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Runly.Time
An easily testable clock.
Register an IClock
public void ConfigureServices(IServiceCollection services)
{
// Use the system clock -- equivalent to using TimeProvider.System.GetUtcNow()
services.AddSingleton<IClock, SystemClock>();
// Or inject a test clock that can be manually manipulated in tests
services.AddSingleton<IClock, TestClock>();
}
Use IClock to get the time
public class MyClass
{
private readonly IClock _clock;
public DateTimeOffset CreatedAt { get; init; }
public DateTimeOffset UpdatedAt { get; set; }
public MyClass(IClock clock)
{
_clock = clock;
CreatedAt = _clock.UtcNow;
UpdatedAt = _clock.UtcNow;
}
public void SomeMethod()
{
UpdatedAt = _clock.UtcNow;
}
}
Make assertions about the time in tests
public class MyClassTests
{
private readonly TestClock _clock;
public MyClassTests(IClock clock)
{
// Replace the SystemClock with a TestClock for tests
_clock = (TestClock)clock;
}
[Fact]
public async Task SomeMethod_ShouldSetUpdatedAt()
{
var createdAt = _clock.UtcNow;
var myClass = new MyClass(_clock);
var updatedAt = _clock.AdvanceOneMinute();
myClass.SomeMethod();
// UpdatedAt should be one minute after CreatedAt
Assert.Equal(createdAt, myClass.CreatedAt);
Assert.Equal(updatedAt, myClass.UpdatedAt);
}
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 154 | 4/25/2024 |