小编ren*_*gbp的帖子

是否可以使用 Moq 从实例中获取模拟实例?

假设我有这个接口和这个类:

public interface IScheduler
{
    void StopTimer();

    // some other methods
}

public class Scheduler : IScheduler
{
    private static readonly IScheduler scheduler = new Scheduler();

    private readonly Timer timer;

    public Scheduler()
    {
        refreshTimer = new Timer
        {
            Enabled = false,
            AutoReset = false
        };
    }

    public static IScheduler GetScheduler()
    {
        return scheduler;
    }

    public void StopTimer()
    {
        timer.Stop();
    }

    // some other methods
}
Run Code Online (Sandbox Code Playgroud)

所以我想知道是否可以从 GetScheduler 方法获得一个模拟实例。我试过这样的事情:

[TestMethod]
public void Execute_ButtonClicked_StopTimer()
{
    // arrange
    var mockScheduler = Mock.Get(Scheduler.GetScheduler());
    var …
Run Code Online (Sandbox Code Playgroud)

c# moq

6
推荐指数
1
解决办法
4116
查看次数

Fluent Validation 链式规则不适用于多个 When 条件

我有一个非常有趣的行为。我有以下两个测试用例:

[Fact]
public void Ctor_WhenNeverIsTrueAndAfterOcurrenceIsNotNull_HasError()
{
    // arrange
    var reccurenceEnd = new RecurrenceEnd()
    {
         IsNever = true,
         AfterOccurence = 1
     };

     // act
     var validator = GetValidator();

     // assert
     validator.ShouldHaveValidationErrorFor(p => p.AfterOccurence, reccurenceEnd);
}

[Fact]
public void Ctor_WhenNeverIsFalseAndAfterOccurenceIsNullAndByDateIsNull_HasError()
{
    // arrange
    var reccurenceEnd = new RecurrenceEnd()
    {
        IsNever = false,
        AfterOccurence = null,
        ByDate = null
    };

    // act
    var validator = GetValidator();

    // assert
    validator.ShouldHaveValidationErrorFor(p => p.AfterOccurence, reccurenceEnd);
}
Run Code Online (Sandbox Code Playgroud)

在我的验证器上,如果我有以下内容,第一个测试失败,第二个通过。如果我改变规则的顺序,第一个测试通过,第二个失败。

RuleFor(dto => dto.AfterOccurence)
    .Cascade(CascadeMode.StopOnFirstFailure)
    .Null()
        .When(p => p.IsNever == …
Run Code Online (Sandbox Code Playgroud)

c# xunit fluentvalidation

3
推荐指数
1
解决办法
3091
查看次数

标签 统计

c# ×2

fluentvalidation ×1

moq ×1

xunit ×1