Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MSpec:让我的第一个规范通过_C#_Mspec - Fatal编程技术网

C# MSpec:让我的第一个规范通过

C# MSpec:让我的第一个规范通过,c#,mspec,C#,Mspec,刚开始使用MSpec,我似乎无法通过我的第一个规范。虽然检查源代码是理想的,但我现在真的不想花太多时间去做 问题在于,因为会导致空引用异常,所以存储库为空 建立上的断点会被命中(但不是在我将其放入基类时),但我猜里面的代码没有运行,这导致了我的错误 任何帮助都将是伟大的-解释和链接也非常感谢 [Subject("Sandwich Repository CRUD")] public class sandwich_repository_can_save_sandwiches : SandwichRe

刚开始使用MSpec,我似乎无法通过我的第一个规范。虽然检查源代码是理想的,但我现在真的不想花太多时间去做

问题在于,因为会导致空引用异常,所以存储库为空

建立上的断点会被命中(但不是在我将其放入基类时),但我猜里面的代码没有运行,这导致了我的错误

任何帮助都将是伟大的-解释和链接也非常感谢

[Subject("Sandwich Repository CRUD")]
public class sandwich_repository_can_save_sandwiches : SandwichRepositoryContext
{
    Establish context = () =>
    {
        sandwich = new Sandwich(ValidSandwichName);
        repository = new SandwichRepository();
    };

    Because of = () => { repository.Save(sandwich); };

    It should_contain_the_created_sandwich = repository.GetSandwichByName(ValidSandwichName).ShouldNotBeNull;
}

public abstract class SandwichRepositoryContext
{
    protected static Sandwich sandwich;
    protected const string ValidSandwichName = "Olive Le Fabulos";
    protected static SandwichRepository repository;
}

您的代码看起来不错,尽管
It
似乎缺少lambda运算符,并且
上的括号不应为空。这对你有用吗

[Subject("Sandwich Repository CRUD")]
public class when_a_sandwich_is_created : SandwichRepositoryContext
{
    Establish context = () =>
    {
        sandwich = new Sandwich(ValidSandwichName);
        repository = new SandwichRepository();
    };

    Because of = () => { repository.Save(sandwich); };

    It should_find_the_created_sandwich =
        () => repository.GetSandwichByName(ValidSandwichName).ShouldNotBeNull();
}

public abstract class SandwichRepositoryContext
{
    protected static Sandwich sandwich;
    protected const string ValidSandwichName = "Olive Le Fabulos";
    protected static SandwichRepository repository;
}
下面是我用来验证上述上下文是否通过的基础结构代码:

public class SandwichRepository
{
    Sandwich _saved;

    public void Save(Sandwich sandwich)
    {
        _saved = sandwich;
    }

    public Sandwich GetSandwichByName(string validSandwichName)
    {
        if (_saved.ValidSandwichName == validSandwichName)
            return _saved;

        return null;
    }
}

public class Sandwich
{
    public string ValidSandwichName
    {
        get;
        set;
    }

    public Sandwich(string validSandwichName)
    {
        ValidSandwichName = validSandwichName;
    }
}

您的代码看起来不错,尽管
It
似乎缺少lambda运算符,并且
上的括号不应为空。这对你有用吗

[Subject("Sandwich Repository CRUD")]
public class when_a_sandwich_is_created : SandwichRepositoryContext
{
    Establish context = () =>
    {
        sandwich = new Sandwich(ValidSandwichName);
        repository = new SandwichRepository();
    };

    Because of = () => { repository.Save(sandwich); };

    It should_find_the_created_sandwich =
        () => repository.GetSandwichByName(ValidSandwichName).ShouldNotBeNull();
}

public abstract class SandwichRepositoryContext
{
    protected static Sandwich sandwich;
    protected const string ValidSandwichName = "Olive Le Fabulos";
    protected static SandwichRepository repository;
}
下面是我用来验证上述上下文是否通过的基础结构代码:

public class SandwichRepository
{
    Sandwich _saved;

    public void Save(Sandwich sandwich)
    {
        _saved = sandwich;
    }

    public Sandwich GetSandwichByName(string validSandwichName)
    {
        if (_saved.ValidSandwichName == validSandwichName)
            return _saved;

        return null;
    }
}

public class Sandwich
{
    public string ValidSandwichName
    {
        get;
        set;
    }

    public Sandwich(string validSandwichName)
    {
        ValidSandwichName = validSandwichName;
    }
}

谢谢你,这确实是上面的lambda。我讨厌答案如此明显。尤其是当我试图与其他人的代码进行比较时。不管怎么说-你修好了-我很高兴。谢谢你,这确实是它上面的兰姆达。我讨厌答案如此明显。尤其是当我试图与其他人的代码进行比较时。不管怎样-你修好了-我很高兴。