2

単体テスト中の注入されたインターフェースがあります。問題のメソッドは機能していますが、返されたサンプル データが完全で正確であることを確認する単体テストを作成しようとしています。私のテストは正しいように見え、結果も同じように見えますが、テストは「CollectionAssert.AreEquivalent に失敗しました。期待されるコレクションには の 1 回の出現が含まれています。実際のコレクションには 0 回の出現が含まれています。」というエラーが表示されて失敗します。

[TestMethod]
    public void Should_Get_All_Amenities()
    {
        var amenitiesRep = _ninjectKernel.Get<IAmenityRepository>();

        var amenities = amenitiesRep.GetAmenities();

        var expected = new List<Amenity>
        {
            new Amenity() {Id = 1, Name = "Pool", Category = "resort"},
            new Amenity() {Id = 2, Name = "Hottub", Category = "resort"},
            new Amenity() {Id = 3, Name = "Steamroom", Category = "unit"}
        };

        Assert.IsNotNull(amenities);
        Assert.IsTrue(amenities.Count() == 3);
        CollectionAssert.AreEquivalent(expected, amenities);
    }

(私の TestRepository からの関連コード)

        var amenities = new List<Amenity>
        {
            new Amenity() {Id = 1, Name = "Pool", Category = "resort"},
            new Amenity() {Id = 2, Name = "Hottub", Category = "resort"},
            new Amenity() {Id = 3, Name = "Steamroom", Category = "unit"}
        };

        var mockAmenitiesRep = new Mock<IAmenityRepository>();
        mockAmenitiesRep.Setup(_m => _m.GetAmenities()).Returns(amenities);
        Kernel.Bind<IAmenityRepository>().ToConstant(mockAmenitiesRep.Object);

CollectionAssert ですべてのデータが正しく入力されていることを確認できます。すべてのフィールドが 1 対 1 で一致し、同じ数のオブジェクト、同じオブジェクト タイプであるため、テストが失敗する理由がわかりません。

(編集: コードが失敗する行は CollectionAssert です)

4

1 に答える 1