Я не уверен, что понимаю проблему, почему вы не можете просто сделать это:
[TestMethod()]
public void AddProductTest()
{
CatalogController target = new CatalogController(/*testing variables*/);
target.AddProduct(new Product { /* product details for testing */ });
// Test the results
}
Хотя, возможно, я не понимаю проблемы. Использование переменных формы для публикации - это хороший подход, однако он будет очень хорошо работать, когда вам нужно будет отредактировать продукт, и через некоторое время вы обнаружите, что гораздо проще, когда все ваши действия принимают переменные формы и обновляют вашу модель. Одна вещь, на которую стоит обратить внимание при использовании TryUpdateModel и UpdateModel, заключается в том, что мы столкнулись с ошибкой в Entity Framework, если вы попытаетесь обновить сложную модель уполномоченного фреймворка, иногда она может выдавать исключения. Но написать собственное средство обновления модели очень просто, как мы сделали.
РЕДАКТИРОВАТЬ:
Я не уверен, что вы сможете или вам нужно протестировать саму привязку модели. Привязка модели является частью инфраструктуры MVC и выходит за рамки теста для контроллера, я бы не стал этим заниматься и предположил, что он будет работать в контексте вашего теста.
Если вам действительно нужно протестировать привязку модели, я знаю только один способ - передать переменные формы сообщения и затем использовать метод TryUpdateModel.