0
私はDAOでUpdateメソッドのユニットテストを実行しようとしている(EmployeeDAO.cs、定義が含まれていません。私のDALレイヤー/プロジェクト内にあります。 EmployeeDAO.csクラスの中で、私の更新メソッド列挙子「更新」クラスがだけのユニットテストメソッドのではなく、それはDALのプロジェクト内で使用
public UpdateStatus Update(Employee emp)
{
UpdateStatus status = UpdateStatus.Failed;
HelpdeskRepository repo = new HelpdeskRepository(new DbContext());
try
{
DbContext ctx = new DbContext();
var builder = Builders<Employee>.Filter;
var filter = Builders<Employee>.Filter.Eq("Id", emp.Id) & Builders<Employee>.Filter.Eq("Version", emp.Version);
var update = Builders<Employee>.Update
.Set("DepartmentId", emp.DepartmentId)
.Set("Email", emp.Email)
.Set("Firstname", emp.Firstname)
.Set("Lastname", emp.Lastname)
.Set("Phoneno", emp.Phoneno)
.Set("Title", emp.Title)
.Inc("Version", 1);
var result = ctx.Employees.UpdateOne(filter, update);
status = repo.Update(emp.Id.ToString(), filter, update);
//ask how to get status to work in MatchedCount/Modified count so we don't need DbContext use
if (result.MatchedCount == 0) //if zero version didn't match
{
status = UpdateStatus.Stale;
}
else if (result.ModifiedCount == 1)
{
status = UpdateStatus.Ok;
}
else
{
status = UpdateStatus.Failed;
}
}
catch (Exception ex)
{
DALUtils.ErrorRoutine(ex, "EmployeeDAO", "UpdateWithRepo");
}
return status;
}
は、コンパイラによって検出されたバグはありません。私は
[TestMethod]
public void TestUpdateShouldReturnOK()
{
EmployeeDAO dao = new EmployeeDAO();
Employee emp = dao.GetById(eid);
emp.Phoneno = "(555)555-9999";
Assert.IsTrue(dao.Update(emp) == UpdateStatus.OK);
}
、同じ溶液内/ UnitTestProject私EmployeeDAOTests.csの内側に、この方法ではそれにいくつかのユニットテストを実行しようとするときしかし、それはUpdateStatusを」」(CS0117)
ことを私に伝えます
:「かなり明らかに私の実際のDAOでの使用のために有効であると思わOKの定義を持つようにここで見ることができ
を、 『OK」の定義が含まれていません』
public enum UpdateStatus
{
Ok = 1,
Failed = -1,
Stale = -2
};
また、私がOk、Failed、Staleを定義する順序を交換すると、単位テストのエラーは発生しなくなりますが、DAOエラーが発生し始めます。
非常に混乱し、誰もが任意の入力を持っていますか?
たあなたの場合はそれが恥ずかしいです...「OK」 –
@VisakhVAまあの間違っています。これを答えにして、私はあなたに信用できますか? – Jaeriko