2015-11-13 1 views
0

Я новичок в тестировании и никогда не использовал MSpec. Я смотрел учебники, и единственными примерами являются «lite», например 1 + 1 should be 2. Мне нужно проверить этот реальный метод, и я не знаю, с чего начать.Как написать свой первый серьезный тест с помощью MSpec?

public ILineItem CreateLineItem(BaseVariationContent sku, int quantityToAdd) 
{ 
    var price = sku.GetDefaultPrice(); 
    var parent = sku.GetParentProducts().FirstOrDefault() != null ? _contentLoader.Get<ProductContent>(sku.GetParentProducts().FirstOrDefault()).Code : string.Empty; 

    return new LineItem 
     { 
      Code = sku.Code, 
      DisplayName = sku.DisplayName, 
      Description = sku.Description, 
      Quantity = quantityToAdd, 
      PlacedPrice = price.UnitPrice.Amount, 
      ListPrice = price.UnitPrice.Amount, 
      Created = DateAndTime.Now, 
      MaxQuantity = sku.MaxQuantity ?? 100, 
      MinQuantity = sku.MinQuantity ?? 1, 
      InventoryStatus = sku.TrackInventory ? (int)InventoryStatus.Enabled : (int)InventoryStatus.Disabled, 
      WarehouseCode = string.Empty, // TODO: Add warehouse id 
      ParentCatalogEntryId = parent, 
     }; 
} 

BaseVariationContent просто класс с большим количеством свойств и имеет расширение.

+0

Вы письменными _любой_ тесты с основными функциями, чтобы вы привыкли к тому, как они работают? На каком уровне вы приближаетесь к этому? –

+0

Это мой первый тест –

+1

В этом случае это _really_ звучит так, как будто вам нужно найти учебник по написанию тестов и начать с него - делать это с нуля на Stack Overflow очень просто. –

ответ

2

MSpec github repo имеет довольно хороший README, который объясняет основные синтаксические компоненты тестового класса MSpec.

https://github.com/machine/machine.specifications#machinespecifications

Я не заполнит в деталях теста, но я покажу вам важные части, чтобы настроить учетную mspec тест.

[Subject("Line Item")] 
public class When_creating_a_basic_line_item_from_generic_sku() 
{ 
    Establish context =() => 
    { 
     // you would use this if the Subject's constructor 
     // required more complicated setup, mocks, etc. 
    } 

    Because of =() => Subject.CreateLineItem(Sku, Quantity); 

    It should_be_in_some_state =() => Item.InventoryStatus.ShouldEqual(InventoryStatus.Enabled); 

    private static Whatever Subject = new Whatever(); 
    private static BaseVariationContent Sku = new GenericSku(); 
    private static int Quantity = 1; 
    private static ILineItem Item; 
} 

Вы хотите, чтобы запустить эти тесты, так что используйте инструмент командной строки

https://github.com/machine/machine.specifications#command-line-reference

или одну из интеграций

https://github.com/machine/machine.specifications#resharper-integration