1

MSpec を使い始めたばかりで、最初の仕様に合格することができないようです。ソースコードをチェックすることは理想的ですが、私は今それを行うのに何年も費やしたくありません.

問題は、 null 参照例外が発生するため、リポジトリが null であることです。

確立のブレークポイントがヒットします (ただし、基本クラスに配置したときはヒットしません) が、内部のコードが実行されていないため、エラーが発生していると思います。

どんな助けでも素晴らしいでしょう - 説明とリンクも非常に高く評価されています.

[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;
}
4

1 に答える 1

1

Itのラムダ演算子と括弧が欠落しているように見えますが、コードは良さそうShouldNotBeNullです。これはうまくいきますか?

[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;
    }
}
于 2011-01-09T17:27:18.920 に答える