0

私は以前、asp.net Web API (パッケージ化された asp.net mvc 4 内) のベータ版を使用して開発を行っていましたが、すべて正常に動作していました。また、基本的にコントローラーを作成し、コントローラーで Post または Get を呼び出すいくつかのテストも行いました。

今、これらは私に言うエラーを与えています

投稿は言語でサポートされていません

また

Get は言語でサポートされていません

テスト プロジェクトを削除すると、すべて問題なく、Web API プロジェクトをビルドでき、機能します。

しかし、私のテストは常にエラーになります。テスト プロジェクトを削除して、ゼロから再作成しましたが、それでも同じです。

私がしているのは、コントローラーのインスタンスを作成し、コントローラーの実際のメソッドである Get / Post を呼び出すことだけです。

4

1 に答える 1

0

彼は、NUnit と Moq でテストされた MVC 4 の既定の WebAPI プロジェクトを使用した Web API コントローラーの単体テストの例です。

//ValuesController.cs in GetPostExample project
using System.Collections.Generic;
using System.Web.Http;

namespace GetPostExample.Controllers
{
    public class ValuesController : ApiController
    {
        // GET api/values
        public IEnumerable<string> Get()
        {
            return new[] { "value1", "value2" };
        }

        // GET api/values/5
        public string Get(int id)
        {
            return "value";
        }

        // POST api/values
        public void Post(string value)
        {
        }

        // PUT api/values/5
        public void Put(int id, string value)
        {
        }

        // DELETE api/values/5
        public void Delete(int id)
        {
        }
    }
}

//AGetPostValuesControllerShould.cs in GetPostExampleTest project
using System.Web.Http.Controllers;
using GetPostExample.Controllers;
using Moq;
using NUnit.Framework;

namespace GetPostExampleTest
{
    [TestFixture]
    public class AGetPostValuesControllerShould
    {
        private Mock<HttpControllerContext> _controllerContext;

        [SetUp]
        public void Init()
        {
            _controllerContext = new Mock<HttpControllerContext>();
            _controllerContext.SetupAllProperties();
        }

        [Test]
        public void WhenAGetRequestIsCalledToValuesontrollerItShouldReturnAnArrayOfValues()
        {
            var expected = new[] {"value1", "value2"};

            var valuesController = new ValuesController {ControllerContext = _controllerContext.Object};
            var result = valuesController.Get();

            Assert.That(result, Is.EqualTo(expected));
        }
    }
}
于 2012-08-27T12:49:34.460 に答える