0

私は自分のコントローラーをテストしようとしていますが、このテストは初めてです。NUnit と Moq を使用すると、null の結果が得られ続けます。これが私のテストです。ステップがありませんか? 私が言ったように、それは私の最初のプロジェクトです。

[TestFixture]
class CustomerServiceTests
{
    public Mock<IRepository<Customer>> CustomerRepository = new Mock<IRepository<Customer>>(); 

    public Customer Customer;

    [SetUp]
    public void Setup()
    {
        Customer = new Customer()
        {
            Id = 1 << Can I set the ID?
            Address = "3 Lakeview Terrace",
            City = "New York",
            Email = "someone@email.com",
            FirstName = "Joe",
            LastName = "Dirt",
            Phone = "888-888-8888",
            Province = "NY"
        };         
    }


    [Test]
    public void CanCreateCustomer()
    {
        // ARRANGE
        var controller = new CustomerController(CustomerRepository.Object);
        controller.Create(Customer);

        // ACT
        var customer = CustomerRepository.Setup(c => c.Find(1)).Returns(new Customer());

        // ASSERT
        Assert.AreEqual(Customer, customer);
    }      
}

コントローラ

// POST: /Customer/Create
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(Customer customer)
    {
        if (ModelState.IsValid)
        {
            _customerRepository.Add(customer);
            return RedirectToAction("Index");
        }
        return View(customer);
    }

リポジトリ

public interface IRepository<T>  where T : class 
    {
        IQueryable<T> Get { get; }
        T Find(object[] keyValues);
        T Find(int id);
        void Add(T entity);
        void Update(T entity);
        void AddOrUpdate(T entity);
        void Remove(object[] keyValues);
        void Remove(T entity);

    }
4

2 に答える 2

0

viewName をテストするには、コードを少し変更する必要があります。

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Customer customer)
{
    if (ModelState.IsValid)
    {
        _customerRepository.Add(customer);
        return RedirectToAction("Index");
    }
    return View("Create", customer);
}

テスト:

[Test]
public void ReturnView()
{
   // ACT
   var controller = new CustomerController(CustomerRepository.Object);
   var result = controller.Create(Customer);

   // ASSERT
   Assert.AreEqual("Create", ((ViewResult)result).ViewName);
}

返されたデータをテストするには:

[TestMethod]
public void TestMethod2()
{
    var controller = new CustomerController();
    var result = controller.Create(Customer);

    Assert.AreEqual(1, ((Asd)((ViewResult)result).ViewData.Model).Id);
 }
于 2013-10-11T18:23:13.040 に答える