benim uygulamayı test ünitesine Microsoft.Office.Interop.Excel.Range (ve diğer Microsoft.Office.Interop.Excel arayüzleri) alay etmek istiyorum. C# ile .NET 4 ile 4.0 4.010 Moq kullanıyorum. kodundaNasıl Microsoft.Office.Interop.Excel.Range Moq ile alay?
var range = new Mock<Microsoft.Office.Interop.Excel.Range>();
range.Setup(r => r.get_Value(1)).Returns("Something");
var classBeingTested = new MyClass(range.Object);
birim test olmak şöyle, ben Range kullanıyorum: Benim birim testinde
, ben şöyle mock davranışını kurmayapublic MyClass(Range range)
{
var value = range[1].ToString();
}
Bu alay et uygulayabilirsiniz nasıl
Error: Missing method 'instance object [My.Example.Implementation.MyClass] Microsoft.Office.Interop.Excel.Range::get__Default(object,object)' from class 'Castle.Proxies.RangeProxy'.
: testi çalışır
, aşağıdaki istisna üretir g başarıyla mi? Excel Interop işlevselliğini https://stackoverflow.com/a/9486226/1548950 gibi bir desenle yalıtmanın olası bir çözüm olduğunu anlıyorum; Ancak, Microsoft.Office.Interop.Excel arabirimlerinden alay oluşturabilmek sayesinde daha mutlu olurdum.
DÜZENLEME: Bu sorunla
TAMAM hakkında daha fazla ayrıntı, bu garip. Jimmy_keen'in önerisini test etmek için bir proje hazırladım. İşe yarıyor. jimmy_keen önerisi diğer projeler üzerinde iyi çalıştı bu yana
Error: Missing method 'instance object [My.Example.Implementation.MyClass] Microsoft.Office.Interop.Excel.Range::get__Default(object,object)' from class 'Castle.Proxies.RangeProxy'.
, ben yanlış bir şey olduğunu şüphe başladı: Ben ile sorunları vardı projeyi test etmek aynı öneriyi kullandığınızda Ancak, aşağıdaki istisna atar proje ile kodu test ediyorum. http://www7.zippyshare.com/v/70834394/file.html
problemin kök proje başka bir sınıf (yani birim test ediliyor değildir) esasen aşağıdaki kodla içerdiğini gibi görünüyor:
Yani, sorunu ayrıntılarıyla gösteren bir deney çözüm yarattıusing Microsoft.Office.Interop.Excel;
namespace Project
{
public class UnTestedClass
{
public UnTestedClass(Worksheet sheet)
{
var foo = sheet.Range["Description"].Column;
}
}
}
bu soruna neden neden ben hiç birim testinde UnTestedClass kullanmıyorum, çünkü anlamıyorum. Moq'u nasıl kullanmam gerektiğiyle ilgili bir şeyi mi özledim yoksa bir hataya rastladım mı?
1 Bu garip, ben COM nesneleri ile ilgisi vardır tahmin ediyorum. Ben excel birlikte çalışma referans olarak kısa sürede, artık bu konuda bazı çalışmadan sonra Garip benim Moq kütüphane ... ... – jsmith
referans verebilir, şimdi kendi ile Microsoft.Office.Interop.Excel işlevselliği izole doğru hareket ediyorum Microsoft.Office.Interop.Excel. * alay etmek yerine özel sınıflar ve arabirimler. Bu sorunun cevabı Microsoft.Office.Interop.Excel alay acil sorunları çözmek etmese de. * sonuçta sadece yararlı hale getirmek için çok fazla ayar çalışma gerektirir başladı. –