не пытайтесь присвоить значение вашему столбцу внутри операторов CASE WHEN, поскольку вы уже это делаете.
СЛУЧАЙ КОГДА оценивается в значение, которое удовлетворяет условию.
попробуйте этот код
UPDATE payments SET
total = :total,
paid = (CASE WHEN paid > :new THEN :new ELSE paid END),
due = (CASE WHEN paid < :new THEN (:new - paid) ELSE due END)
WHERE id = :id
Я удалил назначения для платных и подлежащих оплате столбцов внутри описания случая.
Та ссылка является ОДНИМ путем, но более хорошо использовать Насмешку:
Mock<ControllerContext> MockContext(string userName)
{
var mockContext = new Mock<ControllerContext>();
// mock an authenticated user
mockContext.SetupGet(p => p.HttpContext.User.Identity.Name).Returns(userName);
mockContext.SetupGet(p => p.HttpContext.User.Identity.IsAuthenticated).Returns(true);
return mockContext;
}
[TestMethod]
public void DinnersController_Delete_Should_Fail_With_InvalidOwner_Given_Wrong_User()
{
//set by default
var mockContext = MockContext("scottha");
// mock an authenticated user
_dinnerController.ControllerContext = mockContext.Object;
ViewResult result = _dinnerController.Delete(1, "") as ViewResult;
Assert.AreEqual("InvalidOwner", result.ViewName);
}
При использовании TDD тесты должны только протестировать рассматриваемый код, все другие связанные объекты должны быть насмешками/фальшивками
среди других Вам будет нужен ложный поставщик систем обеспечения безопасности, который может моделировать пользовательские случаи, которых Вы требуете для тестирования (гость, user1, user2, администратор и т.д.)
При создании пустого проекта MVC с текущим RC MVC, Вы получаете платформу базового теста с ложными поставщиками систем обеспечения безопасности (членство/роли и т.д.). Они нуждаются в некоторых излагающих в деталях, но дают базовую конструкцию